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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章