现在的位置: 首页 > 综合 > 正文

struts2 返回json数据(结合Extjs)

2014年01月12日 ⁄ 综合 ⁄ 共 4220字 ⁄ 字号 评论关闭

本例使用struts2版本 struts-2.1.8.1

 

首先导入必要的jar包:

 

配置web.xml:

  1. <filter>  
  2.         <filter-name>struts2</filter-name>  
  3.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  4.     </filter>  
  5.     <filter-mapping>  
  6.         <filter-name>struts2</filter-name>  
  7.         <url-pattern>*.action</url-pattern>  
  8.     </filter-mapping>  

 

 

接着书写Action类:

 

  1. import java.util.ArrayList;  
  2. import java.util.HashMap;  
  3. import java.util.List;  
  4. import java.util.Map;  
  5. import com.opensymphony.xwork2.Action;  
  6. public class Test {  
  7.     public Map responseJson;  
  8.     public Map getResponseJson() {  
  9.         return responseJson;  
  10.     }  
  11.     public void setResponseJson(Map responseJson) {  
  12.         this.responseJson = responseJson;  
  13.     }  
  14.       
  15.     public String getList(){  
  16.         Map<String, Object> map = new HashMap<String, Object>();  
  17.         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
  18.         for(int i=0;i<3;i++){  
  19.             Map<String, Object> m = new HashMap<String, Object>();  
  20.             m.put("id", i);  
  21.             m.put("name""Mic"+i);  
  22.             list.add(m);  
  23.         }  
  24.         map.put("rows", list);  
  25.         map.put("totalCont"3);  
  26.         this.setResponseJson(map);  
  27.         return Action.SUCCESS;  
  28.     }  
  29. }  

 

 

 

最后配置struts.xml文件:

  1. <package name="jsonTest" extends="json-default">  
  2.         <action name="test" class="bll.Test" method="getList">              
  3.             <result type="json">  
  4.                 <param name="root">responseJson</param>  
  5.             </result>  
  6.         </action>  
  7.     </package>  

 

 

struts.xml配置说明:

1,<result type="json"> 这句说明返回类型为json,所以extends设置为"json-default"。

2,<param name="root">responseJson</param> responseJson对应返回数据的根,如果省略这行返回的结果如下:

 

  1. {"list":"success","responseJson":{"rows":[{"name":"Mic0","id":0},{"name":"Mic1","id":1},{"name":"Mic2","id":2}],"totalCont":3}}  

 

 

如果设置了root,结果如下:

  1. {"rows":[{"name":"Mic0","id":0},{"name":"Mic1","id":1},{"name":"Mic2","id":2}],"totalCont":3}  

 

 

以上步骤做好后,我们就可以调用该action了:

  1. Ext.onReady(function(){  
  2.         new Mic.GridPanel({  
  3.             title : 'test',  
  4.             width : 500,  
  5.             height : 410,  
  6.             dataUrl : 'test.action',  
  7.             dwrStore : false,  
  8.             colMapping : ['id','name'],  
  9.             headers : [  
  10.                 { header: "Id", width: 60, dataIndex:'id'},  
  11.                 { header: "名称", width: 150, dataIndex:'name'}  
  12.             ]  
  13.         }).render(Ext.getBody());  
  14.     });  

 

 

调用说明: dataUrl : 'test.action'  test就是action中的name属性。

 

返回数据:

 

效果图:

 

 

 

 

 

 

抱歉!评论已关闭.