struts2 返回json数据

 

本例使用struts2版本 struts-2.1.8.1

 

首先导入必要的jar包:


 

配置web.xml:

 

 

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类:

 

 

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

 

 

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对应返回数据的根,如果省略这行返回的结果如下:

 

Js代码 复制代码 收藏代码
  1. {"list":"success","responseJson":{"rows":[{"name":"Mic0","id":0},{"name":"Mic1","id":1},{"name":"Mic2","id":2}],"totalCont":3}}  

 

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

 

Js代码 复制代码 收藏代码
  1. {"rows":[{"name":"Mic0","id":0},{"name":"Mic1","id":1},{"name":"Mic2","id":2}],"totalCont":3}  
 

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

 

Js代码 复制代码 收藏代码
  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属性。

 

返回数据:


 

效果图:


发布了48 篇原创文章 · 获赞 34 · 访问量 34万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章