主要实现步骤如下:
1、JSP页面使用脚本代码执行ajax请求
2、Action中查询出需要返回的数据,并转换为json类型模式数据
3、配置struts.xml文件
4、页面脚本接受并处理数据
关键有如下几个点
1.引入包:struts2对数据进行json序列化,必须要用到struts2的json-lib,struts2-json-plugin包;
2.json数据处理:异步提交的数据采用json格式,struts2-json-plugin会对数据进行json处理,所以struts2配置文件struts.xml中的package节点的extends必须是:extends="json-default";
例如:
3.同样的由于返回的是json数据,所以result的类型也必须采用json;
注意:struts2只能在引入json-lib,struts2-json-plugin包时,result的type属性设定json才不会报错:
result
4.针对异步提交,action的result节点值应该为空,即不能再转向(例如:只能为
1,首先看jsp页面
做一个省市县乡村五级联查的地区下拉列表,首先进入页面要加载所有省份页面代码:
$(function(){
var pid ="000000000000";
$.ajax({
url:"getRegionBranch.action",
type:"post",
data:"pid=" + pid,
dataType:"json",
success:function (data) {
$.each(data,function(i,item){
$("#province").append("");//赋值
});
},
error:function(xhr, status, error){
alert(status);
alert(xhr.responseText);
}//这里不要加","
});
})
2,
Action中查询出需要返回的数据,并转换为json类型模式数据,代码如下
/**
* 获取地区 省市县乡镇 五级数据
* @return
* @throws Exception
*/
public String getRegion() throws Exception{
this.getRequestAndResponse();
String pid =request.getParameter("pid");
List region =branchService.getRegion(pid);
regionList = JSONArray.fromObject(region);
return SUCCESS;
}
首先把
这样就可以返回json数据了。
regionList
/admin/branch/branch_list.jsp
/admin/branch/branch_edit.jsp
4,页面接收处理数据
$.each(data,function(i,item){
$("#province").append("");//赋值
});
这里是接收处理List类型转化为json后的数据,循环处理赋值给select的下拉列表。
还有一种返回一个Bean转化为json的数据,例如:
success:function (data) {
JSONObject json = JSONObject.fromObject(user);//将map对象转换成json类型数据
result = json.toString();//给result赋值,传递给页面
}
result声明get(),set()方法。
然后前台处理数据是这样的:
success:function(data){
var d = eval("("+data+")");//将数据转换成json类型,可以把data用alert()输出出来看看到底是什么样的结构
//得到的d是一个形如{"key":"value","key1":"value1"}的数据类型,然后取值出来
alert(d.name);
alert(d.age);
}