/**
* 后台返回返回数据有几种方式:
* 1. json
* 2. html
* 组装json的技术:
* 1.struts2-json-plugin
* 2.fastjson
* 3.Gson
* 4.手动拼接
*
* */
/**方式一:采用struts2-json-plugin解决:
* 1.首先在struts的xml文件中配置结果集<result name="json" type="json"></result>,
* 并修改xml中的package标签extends="struts-default"
* 为<package name="default" namespace="/" extends="json-default">
2.默认把所有关联属性转成json格式的数据,比如User中有UserInfo,UserInfo中有User这样一直死循环造成内存溢出
解决方法:在实体类对应关系的get方法上加上@JSON(serialize=false)
*/
/* public String findMangerByDeptId1(){
//根据部门id查找部门的领导
List<User> userList = userService.find("from User where dept.id = ?", User.class, new String[]{deptId});
//放入值栈,struts2-json-plugin会自动从root栈取值
super.push(userList);
//返回值
return "json";
}*/
/**
* 方式2:fastjson解决
* 在实体类对应关系的属性上面加上@JSONField(serialize=false),防止内存溢出
* @throws Exception
* */
/* public String findMangerByDeptId2() throws Exception{
//根据部门id查找部门的领导
List<User> userList = userService.find("from User where dept.id =?", User.class, new String[]{deptId});
//采用fastjson转成json数据
String result = JSON.toJSONString(userList);
//我们需要手动返回json数据
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
response.getWriter().write(result);
//返回值
return NONE;
}*/
/**
* 方式三:html方式解决
* */
public String findMangerByDeptId() throws Exception{
//根据部门id查找部门的领导
List<User> userList = userService.find("from User where dept.id =?", User.class, new String[]{deptId});
//拼接数据
String result = "";
for (User user : userList) {
result+="<option value='"+user.getId()+"'>"+user.getUserName()+"</option>";
}
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
response.getWriter().write(result);
return NONE;
}
//前台接收
<script type="text/javascript">
function deptChange() {
var deptId = $("#deptId :selected").val();
//alert(deptId)
/* 方式一:的返回方式,往select标签里面放option数据
$.ajax({
url:"userAction_findMangerByDeptId",
type:"post",
data:{"deptId":deptId},
dataType:'text',
success:function(data){
//每次选择后要先清空 id="managers"的下拉框
//使用jQuery获取对象都是数组对象,里面存放的是一个个js对象,可以通过下标的方式访问这些对象,取出来的就是js对象
$("#managers")[0].length=1;
//分割data,使之成为数组
data = eval("("+data+")");
$(data).each(function(){
//console.log("<option value='"+this.id+"'>'"+this.userName+"'</option>");
$("#managers").append("<option value='"+this.id+"'>"+this.userName+"</option>")
})
}
})
} */
/*方式二:的返回方式,往select标签里面放option数据
$.ajax({
url:"userAction_findMangerByDeptId",
type:"post",
data:{"deptId":deptId},
dataType:'text',
success:function(data){
//每次选择后要先清空 id="managers"的下拉框
//使用jQuery获取对象都是数组对象,里面存放的是一个个js对象,可以通过下标的方式访问这些对象,取出来的就是js对象
$("#managers")[0].length=1;
//分割data,使之成为数组
data = eval("("+data+")");
$(data).each(function(){
$("#managers").append("<option value='"+this.id+"'>"+this.userName+"</option>")
})
}
})
} */
//方式三:html拼接方式返回数据接收往select标签里面放option数据
$.ajax({
url:"userAction_findMangerByDeptId",
type:"post",
data:{"deptId":deptId},
dataType:'text',
success:function(data){
//每次选择后要先清空 id="managers"的下拉框
//使用jQuery获取对象都是数组对象,里面存放的是一个个js对象,可以通过下标的方式访问这些对象,取出来的就是js对象
$("#managers")[0].length=1;
//接收的数据是后台采用html拼接形式发送过来的,所以无需再像struts2-json-plugin和fastjson一样对数据进行处理
//data是html数据,所以直接appened就可以
$("#managers").append(data);
}
})
}
</script>
java后台返回前端数据的方式json,html 组装json的技术struts2-json-plugin,fast-json,Gson,手动拼接
最新推荐文章于 2021-03-07 19:14:17 发布