1.引入struts2核心jar包,与jsonplugin-0.32.jar
2.配置struts.xml文件
- <constant name="struts.i18n.encoding" value="utf-8"/>
- <package name="example" namespace="/" extends="json-default">
- <action name="gridUtil" class="com.bict.GridUtil" method="grid">
- <result type="json" /> <!--将bean属性以json字符串返回浏览器-->
- </action>
- <action name="gridAction" class="com.bict.util.ClientModel" method="getJSONPage">
- <result name="success">/json_grid.jsp</result>
- </action>
- </package>
配置struts.i18n.encoding常量,不再使用GBK编码,而是UTF-8编码,这是回为AJAX的POST请求都是以UTF-8的方式进行编码的。
3.后台部分User.java
- package com.bict;
- import java.util.List;
- public class User {
- private int id;
- private String name;
- private String age;
- private String descn;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getAge() {
- return age;
- }
- public void setAge(String age) {
- this.age = age;
- }
- public String getDescn() {
- return descn;
- }
- public void setDescn(String descn) {
- this.descn = descn;
- }
- }
定义了一个User对象,当作数据载体
4.gridUtil.java
- package com.bict;
- import java.util.ArrayList;
- import java.util.List;
- import com.bict.User;
- import com.opensymphony.xwork2.ActionSupport;
- public class GridUtil extends ActionSupport {
- private int totalProperty = 100;
- private List root;
- public List getRoot() {
- return root;
- }
- public void setRoot(List root) {
- this.root = root;
- }
- public int getTotalProperty() {
- return totalProperty;
- }
- public void setTotalProperty(int totalProperty) {
- this.totalProperty = totalProperty;
- }
- public String grid() {
- root = new ArrayList<User>();
- User user1 = new User();
- user1.setAge("20");
- user1.setDescn("descn1");
- user1.setId(1);
- user1.setName("name1");
- root.add(user1);
- User user2 = new User();
- user2.setAge("19");
- user2.setDescn("descn2");
- user2.setId(2);
- user2.setName("name2");
- root.add(user2);
- return SUCCESS;
- }
- }
定义了一个Action用于进行数据转化与返回。可以在这里进行与数据库交互,totalProperty是总记录数,root是所有数据库取出的值,它是一个List集合。
5.json_grid.jsp,引入Ext-3.2.1相关配置
- <link href="ext-3.2.1/resources/css/ext-all.css" rel="stylesheet" type="text/css">
- <script type="text/javascript" src="ext-3.2.1/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="ext-3.2.1/ext-all.js"></script>
- <script type="text/javascript" src="ext-3.2.1/src/locale/ext-lang-zh_CN.js"></script>
- <script type="text/javascript" src="js/json_grid.js"></script>
- <body>
- <div id="grid"></div>
- </body>
6.json_grid.js
- Ext.onReady(function(){
- var ds = new Ext.data.Store({
- proxy: new Ext.data.HttpProxy({
- url:'gridUtil.action'
- }),
- reader: new Ext.data.JsonReader({
- totalProperty: 'totalProperty',
- root: 'root'
- }, [
- {name: 'id'},
- {name: 'name'},
- {name: 'descn'}
- ])
- });
- ds.load({params:{start:0,limit:10}});
- var sm = new Ext.grid.CheckboxSelectionModel();
- var cm = new Ext.grid.ColumnModel([
- new Ext.grid.RowNumberer(),
- sm,
- {header:'编号',dataIndex:'id'},
- {header:'名称',dataIndex:'name'},
- {header:'年龄',dataIndex:'age'},
- {header:'描述',dataIndex:'descn'}
- ]);
- cm.defaultSortable = true;
- var ds = new Ext.data.Store({
- proxy: new Ext.data.HttpProxy({url:'gridUtil.action'}),
- reader: new Ext.data.JsonReader({
- totalProperty: 'totalProperty',
- root: 'root'
- }, [
- {name: 'id'},
- {name: 'name'},
- {name: 'descn'},{name:'age'}
- ])
- });
- ds.load({params:{start:0,limit:10}});
- var grid = new Ext.grid.GridPanel({
- el: 'grid',
- ds: ds,
- cm: cm,
- sm: sm,
- title: 'struts2->JSON',
- //height:400,
- autoHeight: true,
- bbar: new Ext.PagingToolbar({
- pageSize: 10,
- store: ds,
- displayInfo: true,
- displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
- emptyMsg: "没有记录"
- })
- });
- grid.render();
- })