日期:2014-05-16 浏览次数:20330 次
本例使用struts2版本?struts-2.1.8.1
?
首先导入必要的jar包:
?
配置web.xml:
?
?
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>
?
?
?接着书写Action类:
?
?
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.opensymphony.xwork2.Action; public class Test { public Map responseJson; public Map getResponseJson() { return responseJson; } public void setResponseJson(Map responseJson) { this.responseJson = responseJson; } public String getList(){ Map<String, Object> map = new HashMap<String, Object>(); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); for(int i=0;i<3;i++){ Map<String, Object> m = new HashMap<String, Object>(); m.put("id", i); m.put("name", "Mic"+i); list.add(m); } map.put("rows", list); map.put("totalCont", 3); this.setResponseJson(map); return Action.SUCCESS; } }
?
?
最后配置struts.xml文件:
?
?
<package name="jsonTest" extends="json-default"> <action name="test" class="bll.Test" method="getList"> <result type="json"> <param name="root">responseJson</param> </result> </action> </package>
?
struts.xml配置说明:
1,<result type="json"> 这句说明返回类型为json,所以extends设置为"json-default"。
2,<param name="root">responseJson</param>?responseJson对应返回数据的根,如果省略这行返回的结果如下:
?
{"list":"success","responseJson":{"rows":[{"name":"Mic0","id":0},{"name":"Mic1","id":1},{"name":"Mic2","id":2}],"totalCont":3}}
?
?如果设置了root,结果如下:
?
{"rows":[{"name":"Mic0","id":0},{"name":"Mic1","id":1},{"name":"Mic2","id":2}],"totalCont":3}?
以上步骤做好后,我们就可以调用该action了:
?
Ext.onReady(function(){ new Mic.GridPanel({ title : 'test', width : 500, height : 410, dataUrl : 'test.action', dwrStore : false, colMapping : ['id','name'], headers : [ { header: "Id", width: 60, dataIndex:'id'}, { header: "名称", width: 150, dataIndex:'name'} ] }).render(Ext.getBody()); });
?调用说明: dataUrl : 'test.action' ?test就是action中的name属性。
?
返回数据:
?
效果图:
?
?