Extjs 分页显示(SSH + json)
1.自定义json处理类:处理查询出来的teams 和 传进来的 pageInfo对象
(该类是模拟json的jar包)
package com.org.momo.util; import java.util.List; import com.org.momo.bean.PageInfo; import com.org.momo.bean.Student; import com.org.momo.bean.Team; public class JsonUtil { //teams开始 strBuffer.append("\"teams\":["); //处理teams for(int i=0;i<teams.size();i++) { Team team = teams.get(i); //team开始 strBuffer.append("{"); //处理id strBuffer.append("\"id\":"); strBuffer.append(team.getId()); strBuffer.append(","); //处理name strBuffer.append("\"name\":\""); strBuffer.append(team.getName()); strBuffer.append("\","); //处理leader strBuffer.append("\"leader\":\""); strBuffer.append(team.getLeader()); strBuffer.append("\","); //处理slogan strBuffer.append("\"slogan\":\""); strBuffer.append(team.getSlogan()); strBuffer.append("\","); //处理members strBuffer.append("\"members\":\"") ; if(team.getMembers()!=null){ int j=0 ; for(Student stu:team.getMembers()){ j++ ; strBuffer.append(stu.getName()) ; if(j<team.getMembers().size()){ strBuffer.append(",") ; } } } strBuffer.append("\"") ; //team结束 if(i<teams.size()-1) { strBuffer.append("},"); } else { strBuffer.append("}"); } } //teams结束 strBuffer.append("]"); strBuffer.append("}") ; jsonStr = strBuffer.toString() ; return jsonStr ; } }
2.控制层处理类action:
package com.org.momo.action.team; import java.io.PrintWriter; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; import com.org.momo.bean.PageInfo; import com.org.momo.bean.Team; import com.org.momo.service.TeamService; import com.org.momo.util.JsonUtil; import com.org.momo.util.XmlUtil; public class ViewTeamsEXTAction extends ActionSupport { @Resource private TeamService teamService; private PageInfo pageInfo ; private Integer start ; private Integer limit ; public PageInfo getPageInfo() { return pageInfo; } public void setPageInfo(PageInfo pageInfo) { this.pageInfo = pageInfo; } public String execute() { HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/plain;charset=GBK"); try { PrintWriter out = response.getWriter(); pageInfo = new PageInfo(); pageInfo.setCurrentPage(start/5 + 1) ; //设置当前页 pageInfo.setPageRows(5) ; //设置每页显示多少行 //获取所有小组 List<Team> teams = teamService.pageTeams(pageInfo) ; out.println(JsonUtil.teamsToExtPage(teams, pageInfo)); //将document转换为String输出 out.flush() ; out.close() ; } catch (Exception e) { e.printStackTrace() ; } return NONE; } public void setStart(Integer start) { this.start = start; } public Integer getStart() { return start; } public void setLimit(Integer limit) { this.limit = limit; } public Integer getLimit() { return limit; } }
3.struts.xml配置路径:
<action name="ViewTeamsEXT" class="com.org.momo.action.team.ViewTeamsEXTAction"> </action>
4.显示层:
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%> <% String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/"; %> <html> <head> <base href="<%=basePath%>"> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <title>显示小组(Ajax)</title> <link rel="stylesheet" type="text/css" href="css/team.css" /> <link rel="stylesheet" type="text/css" href="ext-2.0.2/resources/css/ext-all.css"/> <script type="text/javascript" src="ext-2.0.2/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="ext-2.0.2/ext-all.js"></script> <script type="text/javascript" src="js/trim.js"></script> <script type="text/javascript"> Ext.onReady(function(){ var store = new Ext.data.Store({ //Store开始 proxy:new Ext.data.HttpProxy({url:"team/ViewTeamsEXT",method:"post"}), reader:new Ext.data.JsonReader( {root:"teams",totalProperty:'totalProperty',id:"id"}, [{name:"id"}, {name:"name"}, {name:"leader"}, {name:"slogan"}, {name:"members"}, {name:"operation"}]) }) ; //Store结束 var column = new Ext.grid.ColumnModel([{header:'编号',dataIndex:'id'}, {header:'组名',dataIndex:'name'}, {header:'组长',dataIndex:'leader'}, {header:'口号',dataIndex:'slogan'}, {header:'组员',dataIndex:'members'}, {header:'操作',dataIndex:'operation'}]) ; column.defaultSortable = true ;//默认可排序 var grid = new Ext.grid.GridPanel({ renderTo:"teamExt", width:800, autoHeight:true, title:'小组管理', store:store, cm:column, autoExpandColumn:4, bbar:new Ext.PagingToolbar({pageSize:5,store:store,displayInfo:true,displayMsg:'第{0}条到第{1}条,一共{2}条',emptyMsg:'没有记录'})}) ; store.load({params:{start:0,limit:5}}); }) ; </script> </head> <body> <div id="top"> <h1>显示小组</h1> </div> <div id="content"> <div id="teamExt"></div> </div> <p><div id="page"></div><br/> <p><a href="team/index.jsp">返回小组管理</a> </body> </html>