Struts2 使用jquery、Json实现Ajax的例子和注意点
1. 必须的包,一个不能少!!
json-lib-2.3-jdk15.jar
struts2-json-plugin-2.3.3.jar
commons-beanutils-1.8.3.jar,
commons-collections-3.2.1.jar,
commons-logging-1.1.1.jar,
commons-logging-1.1.1.jar,
ezmorph-1.0.6.jar (缺少此包的话,容易导致奇怪问题,如执行中途跳出等)
2. struts.xml中
<!-- 此处要继承一个默认的空间json-default -->
<package name="jsonDemo" extends="json-default">
<action name="jsonAction" class="action.JsonDemo">
<!-- 返回类型 是json -->
<result type="json">
<!--name必须为root,result是Action中的要返回给前台的属性名 -->
<param name="root">result</param>
</result>
</action>
</package>
3. Action的代码
public class JsonDemo implements Action {
// 用于传递数据的属性
private String name;
private String result;
private Muer mm;
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println("action");
mm = new Muer();
mm.setAge("20");
mm.setName(name);
mm.setLevel("very beautiful");
System.out.println("age" + mm.getAge() + " name:" + mm.getName()
+ " level:" + mm.getLevel());
JSONObject obj = JSONObject.fromObject(mm);
result = obj.toString();
System.out.println("JSON字符串为:" + result);
return SUCCESS;
}
//略去各个属性的getter 和setter方法
}
4. jsp 页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript" src="js/jquery.js" ></script>
<title>struts2 ajax json demo1</title>
<script type="text/javascript">
$(document).ready(function(e) {
$("#btn").click(function(e) {
var name = $("#name").val();
$.post(
"jsonAction.action",
{name:name},
function(data){
var mm = eval("("+data+")");
alert(mm.name);
alert(mm.age);
alert(mm.level);
},
"json"
);
});
});
</script>
</head>
<body>
<s:textfield name="name" id="name" theme="simple"/>
<s:submit id="btn" value="showJson" theme="simple" />
</body>
</html>
总结一下,要注意几个地方
1. 包一个都别少...
2. 送action传回的数据要做一次处理 var mm = eval("("+data+")");
3 . 可以用获取属性的方式调用eval处理之后的对象 mm.name
补充下: struts2使用json传递List集合到前台页面:
//获取公司对应的库位 ajax
public String getLgortByBukrs(){
try {
//System.out.println(bukrs);
//此处通过Service类获取一个List集合
List<T001L> lgortList = t001lServices.getLgortByBukrs(bukrs);
//将List集合转换为JSONArray对象
JSONArray jArray = JSONArray.fromObject(lgortList);
//转换为json串
result = jArray.toString();
//System.out.println(result);
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
持续学习、持续收获才能带来持续的满足和快乐!
浙公网安备 33010602011771号