1.前台页面中的ajax:
//根据部门查询该部门下的用户列表 function doSelectDept(){ //1、获取部门 var dept = $("#toCompDept option:selected").val(); if(dept != ""){ //2、根据部门查询列表 $.ajax({ url:"${basePath}sys/home_getUserJson2.action", data:{"dept":dept}, type:"post", dataType:"json",//返回数据类型 success: function(data){ //2.1、将用户列表设置到被投诉人下拉框中 if(data != null && data != "" && data != undefined){ if("success" == data.msg){ var toCompName = $("#toCompName"); toCompName.empty(); $.each(data.userList, function(index, user){ toCompName.append("" + user.name + ""); }); } else {alert("获取被投诉人列表失败!");} } else { alert("获取被投诉人列表失败!"); } }, error:function(){alert("获取被投诉人列表失败!");} }); } else { //清空被投诉人列表下拉框 $("#toCompName").empty(); } }
后台Action中输出json格式文本:
方法一:直接用输出流输出Json格式的文本内容。
要在项目中引入对应的包:找到struts2.x 的lib包,向本项目lib包加入“json-lib-2.3-jdk15.jar,ezmorph-1.0.6.jar,commons-beanutils-1.8.0.jar”
public void getUserJson(){ try { //1、获取部门 String dept = ServletActionContext.getRequest().getParameter("dept"); if(StringUtils.isNotBlank(dept)){ QueryHelper queryHelper = new QueryHelper(User.class, "u"); queryHelper.addCondition("u.dept like ?", "%" + dept); //2、根据部门查询用户列表 ListuserList = userService.findObjects(queryHelper); //创建Json对象 JSONObject jso = new JSONObject(); jso.put("msg", "success"); jso.accumulate("userList", userList); //3、输出用户列表以json格式字符串形式输出 HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/html"); ServletOutputStream outputStream = response.getOutputStream(); outputStream.write(jso.toString().getBytes("utf-8")); outputStream.close(); } } catch (Exception e) { e.printStackTrace(); } }
方法二:使用struts2-json-plugin-2.x.jar 包,由struts将action中的变量组装成Json对象。
加入 struts2-json-plugin-2.x.jar 到项目中,在*-struts.xml中配置对应请求方法的返回类型为json。如下:
在Action中:
public String getUserJson2(){ try { //1、获取部门 String dept = ServletActionContext.getRequest().getParameter("dept"); if(StringUtils.isNotBlank(dept)){ QueryHelper queryHelper = new QueryHelper(User.class, "u"); queryHelper.addCondition("u.dept like ?", "%" +dept); //2、根据部门查询用户列表 return_map = new HashMap(); return_map.put("msg", "success"); return_map.put("userList", userService.findObjects(queryHelper)); } } catch (Exception e) { e.printStackTrace(); } return SUCCESS; }
配置文件中:
<package extends="json-default" namespace="/sys" name="sysHomeJson-action"> <action name="home_getUserJson2" method="getUserJson2" class="cn.itcast.home.action.HomeAction"> <result type="json"> <param name="root">return_mapparam> result> action> package>
在返回类型中指定了root参数,意思是只返回并格式化这个类属性为json。【注意:需要利用struts返回json对象的变量,要有对应的get方法。】