整体流程大概是action->jsp->ajax->action->struts->jsp
1.jar包最低要求
最高包要求(struts核心包和json需要的包):
struts核心包:
json需要的包:
为什么这里不提倡把全部包导进去,因为如果你这么做有很大可能造成jar包的版本冲突导致项目无法运行
2.设置jquery根据自己js文件的目录设置
<script src="js/jquery.min.js"></script>
3.获取父框数据,Jsp写法如下,css为博主用的是boostrap框架
<div class="form-group"> <!-- 循环遍历下拉框 --> <select class="form-control" id="fatherboard" style="width:300px;float:left; "> <option value="" selected="selected">-选择大板块-</option> <s:iterator value="#request.boards"> <option value="<s:property value="bigBoard.id" />"> <s:property value="bigBoard.name" /></option> </s:iterator> </select> <select class="form-control" id="sonboard" style="width:200px; float:left; "> <option value="">-选择小板块-</option> </select> <span style="color:red;">请选择所要发帖的版块</span> </div>
4.然后通过ajax获取子框内容,js代码如下
<!-- 处理下拉框JS --> <script type="text/javascript"> $(document).ready(function() { //change用于截获下拉框的状态变化 $("#fatherboard").on('change', function() { //获取父框的选择值 var id = $(this).val(); $.ajax({ type : "post", url : "board/findson", //需要用来处理ajax请求的action,findson为方法名,board是namespace data : { //设置数据源 id : $(this).val() }, dataType : "json", //设置需要返回的数据类型 success : function(data) { var json = eval("(" + data + ")"); //将数据转换成json类型,可以把data用alert()输出出来看看到底是什么样的结构 //清空子下拉框 $('#sonboard').empty(); //循环遍历子下拉框 for (var i = 0; i < json.length; i++) { var s = json[i]; $('#sonboard').append("<option value=" + s.id + ">" + s.name + "</option>"); } }, error : function() { alert("系统异常,请稍后重试!"); } //这里不要加"," }); }); }); </script>5.再看action方面
public class aa extends ActionSupport implements ServletRequestAware { //HttpServletRequest是通过ServletRequestAware接口实现 private HttpServletRequest request; //必须对result设置get和set方法 private String result; @Override public void setServletRequest(HttpServletRequest arg0) { this.request = arg0; } public String getResult() { return result; } public void setResult(String result) { this.result = result; } /** * ajax传来的值获取子版块信息 * * @return * @throws IOException */ public String findson() throws IOException { try { // 用户截获从jsp页面传来的数据 int id = Integer.parseInt(httprequest.getParameter("id")); // 此处为子下拉框的集合 List<SmallBoard> boardson = BoardBiz.findSonBoard(id); // 集合转为json形式 包不要导错:import net.sf.json.JSONArray; JSONArray json = JSONArray.fromObject(boardson); // json转为string形式(序列化) result = json.toString(); } catch (Exception e) { e.printStackTrace(); } return SUCCESS; } }
6.然后再看struts
<!-- 完成对board操作的包 --> <package name="board" namespace="/board" extends="struts-default,json-default"> <action name="findson" class="board" method="findson"> <!-- 返回json类型数据 --> <result type="json"> <param name="root">result <!-- result是action中设置的变量名,也是页面需要返回的数据, 该变量必须有setter和getter方法 --> </param> </result> </action> </package>
7.看看效果
完美
有不懂的朋友可以留言问我,谢谢.