1. 在Struts2中融合jQuery+JSON,需要先将struts.xml中encoding设置为UTF-8,还有设置包:
<constant name="struts.i18n.encoding" value="UTF-8"/>
<package name="jsonExample" extends="json-default">
<action name="jsonAction" class="com.test.action.JsonAction">
<result type="json"/>
</action>
</package>
从以上看出,需要新建一个package包,并继承json-default。
2. Action类看如下:
public class JsonAction {
private int[] ints = {10,20};
private Map map = new HashMap();
private String customer = "我是顾客!";
private String field1;
private String field2;
private String field3;
public String execute(){
map.put("name", "Fer");
return Action.SUCCESS;
}
//......setter 和getter
}
设置name属性后,返回success
3. 以下是使用jquery实现AJAX
//这个等于$(document).ready
$(function(){
//获取按钮事件
$("#btn").click(function(){
//把表单的数据进行序列化
var params = $("form").serialize();
//使用jQuery中的$.ajax({});Ajax方法
$.ajax({
url:"jsonAction.action",
type:"POST",
data:params,
dataType:"json",
success:function(data){
//清空显示层中的数据
$("#div1").html("");
//为显示层添加获取到的数据
//获取对象的数据用data.xxx.属性
$("#div1").append("<div><font color='red'>field1:"+data.field1+"</font></div>")
.append("<div><font color='red'>field2:"+data.field2+"</font></div>")
.append("<div><font color='red'>field3:"+data.field3+"</font></div>");
for(var v in data){
//循环输出json中属性
$("#div1").append("<div><font color='red'>json:"+data[v]+"</font></div>");
}
}
});
});
});
还有jsp中的表单就不一一列出了,代码中"#"代表标签id。