本例使用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;
- }
- }
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屬性。
返回數據:
效果圖: