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();
})