ext js json 数据

1.引入struts2核心jar包,与jsonplugin-0.32.jar

2.配置struts.xml文件

 

[html]  view plain  copy
 
  1. <constant name="struts.i18n.encoding" value="utf-8"/>  
  2. <package name="example" namespace="/" extends="json-default">  
  3.         <action name="gridUtil" class="com.bict.GridUtil" method="grid">   
  4.             <result type="json" /> <!--将bean属性以json字符串返回浏览器-->  
  5.         </action>   
  6.     <action name="gridAction" class="com.bict.util.ClientModel" method="getJSONPage">  
  7.         <result name="success">/json_grid.jsp</result>  
  8.     </action>  
  9. </package>  

配置struts.i18n.encoding常量,不再使用GBK编码,而是UTF-8编码,这是回为AJAX的POST请求都是以UTF-8的方式进行编码的。

 

3.后台部分User.java

 

[java]  view plain  copy
 
  1. package com.bict;  
  2. import java.util.List;  
  3. public class User {  
  4.         private int id;   
  5.         private String name;   
  6.         private String age;   
  7.         private String descn;  
  8.     public int getId() {  
  9.         return id;  
  10.     }  
  11.     public void setId(int id) {  
  12.         this.id = id;  
  13.     }  
  14.     public String getName() {  
  15.         return name;  
  16.     }  
  17.     public void setName(String name) {  
  18.         this.name = name;  
  19.     }  
  20.     public String getAge() {  
  21.         return age;  
  22.     }  
  23.     public void setAge(String age) {  
  24.         this.age = age;  
  25.     }  
  26.     public String getDescn() {  
  27.         return descn;  
  28.     }  
  29.     public void setDescn(String descn) {  
  30.         this.descn = descn;  
  31.     }  
  32.       
  33. }  

定义了一个User对象,当作数据载体

 

4.gridUtil.java

 

[java]  view plain  copy
 
  1. package com.bict;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5. import com.bict.User;  
  6.   
  7. import com.opensymphony.xwork2.ActionSupport;  
  8.   
  9. public class GridUtil extends ActionSupport {  
  10.     private int totalProperty = 100;  
  11.     private List root;  
  12.   
  13.     public List getRoot() {  
  14.         return root;  
  15.     }  
  16.   
  17.     public void setRoot(List root) {  
  18.         this.root = root;  
  19.     }  
  20.   
  21.     public int getTotalProperty() {  
  22.         return totalProperty;  
  23.     }  
  24.   
  25.     public void setTotalProperty(int totalProperty) {  
  26.         this.totalProperty = totalProperty;  
  27.     }  
  28.   
  29.     public String grid() {  
  30.         root = new ArrayList<User>();  
  31.         User user1 = new User();  
  32.         user1.setAge("20");  
  33.         user1.setDescn("descn1");  
  34.         user1.setId(1);  
  35.         user1.setName("name1");  
  36.         root.add(user1);  
  37.         User user2 = new User();  
  38.         user2.setAge("19");  
  39.         user2.setDescn("descn2");  
  40.         user2.setId(2);  
  41.         user2.setName("name2");  
  42.         root.add(user2);  
  43.   
  44.         return SUCCESS;  
  45.   
  46.     }  
  47.   
  48. }  

定义了一个Action用于进行数据转化与返回。可以在这里进行与数据库交互,totalProperty是总记录数,root是所有数据库取出的值,它是一个List集合。

 

5.json_grid.jsp,引入Ext-3.2.1相关配置

 

[html]  view plain  copy
 
  1.     <link href="ext-3.2.1/resources/css/ext-all.css" rel="stylesheet" type="text/css">  
  2.     <script type="text/javascript" src="ext-3.2.1/adapter/ext/ext-base.js"></script>  
  3.     <script type="text/javascript" src="ext-3.2.1/ext-all.js"></script>  
  4.     <script type="text/javascript" src="ext-3.2.1/src/locale/ext-lang-zh_CN.js"></script>  
  5.     <script type="text/javascript" src="js/json_grid.js"></script>  
  6.     <body>  
  7.        <div id="grid"></div>  
  8.     </body>  

 

6.json_grid.js

 

[html]  view plain  copy
 
  1. Ext.onReady(function(){  
  2.     var ds = new Ext.data.Store({  
  3.             proxy: new Ext.data.HttpProxy({  
  4.                 url:'gridUtil.action'  
  5.             }),  
  6.             reader: new Ext.data.JsonReader({  
  7.                 totalProperty: 'totalProperty',  
  8.                 root: 'root'  
  9.             }, [  
  10.                 {name: 'id'},  
  11.                 {name: 'name'},  
  12.                 {name: 'descn'}  
  13.             ])  
  14.     });  
  15.       
  16.   
  17.     ds.load({params:{start:0,limit:10}});  
  18.       
  19.       
  20.      var sm = new Ext.grid.CheckboxSelectionModel();   
  21.       
  22.     var cm = new Ext.grid.ColumnModel([   
  23.         new Ext.grid.RowNumberer(),   
  24.         sm,   
  25.         {header:'编号',dataIndex:'id'},   
  26.         {header:'名称',dataIndex:'name'},   
  27.         {header:'年龄',dataIndex:'age'},   
  28.         {header:'描述',dataIndex:'descn'}   
  29.     ]);   
  30.     cm.defaultSortable = true;   
  31.    
  32.     var ds = new Ext.data.Store({   
  33.         proxy: new Ext.data.HttpProxy({url:'gridUtil.action'}),   
  34.         reader: new Ext.data.JsonReader({   
  35.             totalProperty: 'totalProperty',   
  36.             root: 'root'   
  37.         }, [   
  38.             {name: 'id'},   
  39.             {name: 'name'},   
  40.             {name: 'descn'},{name:'age'}   
  41.         ])   
  42.     });   
  43.     ds.load({params:{start:0,limit:10}});   
  44.       
  45.     var grid = new Ext.grid.GridPanel({   
  46.         el: 'grid',   
  47.         ds: ds,   
  48.         cm: cm,   
  49.         sm: sm,   
  50.         title: 'struts2->JSON',   
  51.         //height:400,   
  52.         autoHeight: true,   
  53.        bbar: new Ext.PagingToolbar({   
  54.             pageSize: 10,   
  55.             store: ds,   
  56.             displayInfo: true,   
  57.             displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',   
  58.             emptyMsg: "没有记录"   
  59.         })  
  60.     });   
  61.     grid.render();   
  62. })  

 

 

猜你喜欢

转载自taiwei-peng.iteye.com/blog/2288669