1. 程式人生 > >ExtJs的Grid元件配合struts2返回json資料

ExtJs的Grid元件配合struts2返回json資料

第一次使用extjs的grid元件,簡單做了一個分頁條。主要目地是把資料庫中的資料呈現到前端的grid中。過程記錄如下

首先是JSP頁面程式碼:

    <div id="grid" style="width:400px;height:300px"></div>

然後是JS程式碼:

Ext.onReady(function(){
 var cm = new Ext.grid.ColumnModel([
  {header:'編號', dataIndex:'id', width:250},
  {header:'名字', dataIndex:'name'},
  {header:'年紀', dataIndex:'age'},
  {header:'地址', dataIndex:'address'}
 ]);

 var store = new Ext.data.Store({
  proxy: new Ext.data.HttpProxy({url: path + '/index_query.action'}),
  reader: new Ext.data.JsonReader({
   totalProperty: "total",
   root: "rows"
  },[
     {name:'id'},
     {name:'name'},
     {name:'age'},
     {name:'address'}
  ])
 });
 
 var grid = new Ext.grid.GridPanel({
  renderTo: 'grid', // 渲染到id=grid在div
  autoHeight: true,
  store: store,
  cm: cm,
     width: 600,
     height: 300,
     frame: true,
     forceFit: true,
     stripeRows: true,
  bbar: new Ext.PagingToolbar({
   pageSize: 10,
   store: store,
   displayInfo: true,
   displayMsg: "顯示{0}條到{1}條記錄,一共{1}條記錄",
   emptyMsg: "沒有記錄"
  })
 });
 
 // 如果配置了分頁工具條,store.load()就必須在構造表格以後執行,否則分頁工具條不起作用
 store.load({params:{start:0, limit:10}});
});

Action中的程式碼:

public class IndexAction extends BaseAction<Person> {

 private static final long serialVersionUID = 6187270463225630432L;

 @Resource
 private PersonService personService; // 用到了spring框架

 ExtGrid<Person> extGrid = new ExtGrid<Person>(); // 這裡的ExtGrid只是一個簡單的javaBean物件

 public ExtGrid<Person> getExtGrid() {
  return extGrid;
 }

 public void setExtGrid(ExtGrid<Person> extGrid) {
  this.extGrid = extGrid;
 }

 // limit 10
 // start 0
 private Integer start;
 private Integer limit;

 public void setStart(Integer start) {
  this.start = start;
 }

 public void setLimit(Integer limit) {
  this.limit = limit;
 }

 public String query() {
  System.out.println("start = " + start);
  System.out.println("limit = " + limit);
  List<Person> list = personService.findAll();
  extGrid.setRows(list);// 設定資料
  extGrid.setTotal(list.size()); // 設定總數
  return SUCCESS; // 這裡要返回String , 如果方法是void的話,介面沒資料返回
 }

}

struts.xml檔案的配置(重點是返回JSON的配置)

<struts>
    <package name="json" namespace="/" extends="json-default">
        <action name="index_*" class="indexAction" method="{1}">
            <result type="json">
                <!-- 這裡指定將被Struts2序列化的屬性,該屬性在action中必須有對應的getter方法 -->
                <param name="root">extGrid</param>
            </result>
        </action>
</package>

 最終效果如下:

經過查詢了很多資料,才總結出這個做法。先記錄下來,以後再慢慢改進。。。得意