java extjs4 分页_ExtJs4 SpringMvc3 实现Grid 分页

news/2025/2/26 7:03:42

新建一个Maven webapp项目,webxml以及spring配置没什么需要注意的,不再赘述。

Maven依赖:(个人习惯,有用没用的都加上。。。)

4.0.0

zp.test

extjs

war

0.0.1-SNAPSHOT

extjs Maven Webapp

http://maven.apache.org

junit

junit

4.7

test

jstl

jstl

1.2

taglibs

standard

1.1.2

org.springframework

spring-web

3.2.8.RELEASE

org.springframework

spring-webmvc

3.2.8.RELEASE

org.springframework

spring-aspects

3.2.8.RELEASE

org.springframework

spring-orm

3.2.8.RELEASE

org.aspectj

aspectjweaver

1.7.4

org.hibernate

hibernate-core

4.2.3.Final

commons-pool

commons-pool

1.6

c3p0

c3p0

0.9.1

commons-pool

commons-pool

1.6

cglib

cglib-nodep

3.1

commons-dbcp

commons-dbcp

1.4

javaee

javaee-api

5

mysql

mysql-connector-java

5.1.18

org.codehaus.jackson

jackson-core-lgpl

1.9.6

org.codehaus.jackson

jackson-core-asl

1.9.4

org.codehaus.jackson

jackson-mapper-asl

1.9.5

org.codehaus.jackson

jackson-mapper-lgpl

1.9.6

com.google.code.gson

gson

1.7.1

org.apache.maven.plugins

maven-compiler-plugin

1.6

1.6

extjs

先从Extjs开始吧。

用Sencha Architect在项目的部署路径(webapp)中建立一个extjs4项目,我这里是webapp/grid。

可以参考:

项目首页创建grid用的的js代码:

Ext.define('MyApp.view.MyViewport', {

extend:'Ext.container.Viewport',

initComponent:function() {var me = this;

Ext.applyIf(me, {

items: [

{

xtype:'gridpanel',

height:327,

id:'mygrid',

title:'My Grid Panel',

store:

'persionStore'

,

columns: [

{

xtype:'gridcolumn',

dataIndex:'id',

text:'ID'},

{

xtype:'gridcolumn',

dataIndex:'name',

text:'MyColumn1'},

{

xtype:'gridcolumn',

dataIndex:'coursename',

text:'MyColumn2'}

],

dockedItems: [

{

xtype:'pagingtoolbar',

dock:'bottom',

width:360,

displayInfo:true,

store:

'persionStore'

}

]

},

{

xtype:'textareafield',

height:33,

fieldLabel:'关键字',

labelWidth:60},

{

xtype:'button',

id:'btnfind',

text:'查找'},

{

xtype:'button',

id:'btndelete',

text:'删除'},

{

xtype:'button',

id:'btnadd',

text:'添加'}

]

});

me.callParent(arguments);

}

});

model:

Ext.define('MyApp.model.persionModel', {

extend:'Ext.data.Model',

fields: [

{

name:'id'},

{

name:'name'},

{

name:'coursename'}

]

});

store:

Ext.define('MyApp.store.persionStore', {

extend:'Ext.data.Store',

requires: ['MyApp.model.persionModel'],

constructor:function(cfg) {var me = this;

cfg= cfg ||{};

me.callParent([Ext.apply({

autoLoad:true,

autoSync:true,

model:'MyApp.model.persionModel',

storeId:'MyStore',

pageSize:

5

,

proxy: {

type:'ajax',

url:

'../persionpage.do'

,

reader: {

type:

'json'

,

root:

'items'

,

totalProperty:

'totalCount'

}

}

}, cfg)]);

}

});

pageSize:每页数据的数量

url:springMvc中controller的映射地址

type:设置数据源格式为json

root:要填充进表格的数据的json属性名

totalProperty:总条数的json属性名

Grid的填充原理就是根据Stor中的url获取json数据,再提取json中的值填充grid。

Extjs部分完成,下面来看后台

建立好项目的entity(要和extjs的model对应,名称什么的都是写着玩的。。。)

packagezp.test.json;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;importjavax.persistence.Id;importjavax.persistence.Table;importorg.springframework.stereotype.Repository;

@Repository

@Entity

@Table(name="persion")public classPersion {intid;

String coursename;

String name;

@Id

@Column(name="id")

@GeneratedValue(strategy=GenerationType.AUTO)public intgetId() {returnid;

}public void setId(intid) {this.id =id;

}publicString getCoursename() {returncoursename;

}public voidsetCoursename(String coursename) {this.coursename =coursename;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}

}

DAO:

packagezp.test.json;importjava.util.List;importorg.hibernate.Query;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Component;

@Componentpublic classPersionDao {

@Autowired

SessionFactory sessionFactory;publicSession getSession(){returnsessionFactory.getCurrentSession();

}public ListfindAll(){

String hql=" from Persion";

List list=getSession().createQuery(hql).list();returnlist;

}public voidsave(Persion persion){

getSession().save(persion);

}//public User findByName(String username){//String hql="from Persion as u where u.username=?";//Query query=getSession().createQuery(hql);//query.setString(0, username);//User user=(User)query.uniqueResult();//return user;//}

public intcount(){

String hql3="select count(*) from Persion as p";

Long res=(Long)getSession().createQuery(hql3).uniqueResult();int a=res.intValue();returna;

}public ListfindAll(String start,String limit){

String hql2=" from Persion";

Query query=getSession().createQuery(hql2);

query.setFirstResult(Integer.parseInt(start));

query.setMaxResults(Integer.parseInt(limit));returnquery.list();

}

}

Service:

packagezp.test.json;importjava.util.List;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importcom.google.gson.Gson;importcom.google.gson.JsonArray;importcom.google.gson.JsonElement;importcom.google.gson.JsonObject;

@Servicepublic classPersionService {

@Autowired

PersionDao persionDao;public ListgetAllPersion(){

List list=persionDao.findAll();returnlist;

}public ListgetAllPersion(String start,String limit){

List list=persionDao.findAll(start,limit);returnlist;

}public intgetCount(){returnpersionDao.count();

}//根据Extjs的请求参数获取分页数据

publicString getPagePersionJson(String start,String limit){

List list=this.getAllPersion(start, limit);returnpageListToJson(list);

}/*** 将获取的list数据转换成符合分页数据源格式的json串

* items为extjs store proxy reader中设置的root,填充表格的数据;totalCount为数据总数。

*@paramlist

*@return

*/

private String pageListToJson(Listlist){

JsonObject object=newJsonObject();

Gson gson=newGson();int count=this.getCount();

JsonElement jsonElement=gson.toJsonTree(list);//items为extjs store proxy reader中设置的root,即为数据源;totalCount为数据总数。

object.add("items", jsonElement);

object.addProperty("totalCount", count);returnobject.toString();

}

}

Controller:

packagezp.test.json;importjava.io.IOException;importjava.util.List;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.stereotype.Service;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;importcom.google.gson.Gson;importcom.google.gson.JsonElement;importcom.google.gson.JsonObject;importcom.google.gson.JsonParser;

@Controllerpublic classPersionController {

@Autowired

PersionService persionService;/*** Extjs分页用的函数。start,limit 均为extjs grid传过来的请求参数。

*@paramrequest

*@paramresponse

*@return

*/@RequestMapping("persionpage")

@ResponseBodypublicString PersionPage(HttpServletRequest request,HttpServletResponse response){

String start=request.getParameter("start");

String limit=request.getParameter("limit");returnpersionService.getPagePersionJson(start, limit);

}

}

controller 中@ResponseBody说明此controller不进行视图跳转,在这里的作用就是将数据库中的数据转换成Extjs需要的Json,让前端grid使用。

这时候就可以看出前面Extjs代码设置的root,totalProperty,url有什么用了。

url就是返回json的controller映射地址,totalProperty为数据总数,root就是纯粹的json格式的数据。

controller返回的不仅仅要有数据,还要有totalProperty。可以看看service中pageListToJson方法。


http://www.niftyadmin.cn/n/4747372.html

相关文章

正则表达式判断是否mac地址 java_使用正则表达式判断字符串是否为MAC地址

今天Boss给了一个小任务,要求给定一个字符串,判断该字符串是否是MAC地址,并用Java和正则表达式实现。于是我顺便百度了下MAC地址,并在cmd下使用getmac获取本机的MAC地址,了解了一点后,就用Java实现了。为了…

java语言学习要点_菜鸟入门:Java语言学习六大要点

原标题:菜鸟入门:Java语言学习六大要点Java的学习是比较复杂的,主要表现在相关的一系列平台、规范和协议上。有经验的Java程序员都知道,只掌握了Java语言本身很难开发应用程序。不讨论这些复杂的概念,而是我是参加的培…

java终止正在运行的线程_Java再学习——停止一个正在运行的线程

关于这个问题,先了解一下Thread类方法中被废弃的那些方法。suspend(), resume(),stop()/stop(Throwable obj),destroy()首先,stop(Throwable obj)和destroy()方法在最新的Java中直接就不支持了,没必要去看了。我们只需瞧瞧suspend(), resume(…

mysql 5.7 jdbc 8.0_mysql8.0 jdbc连接注意事项

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼url增加参数useSSL 和时区 : jdbc:mysql://localhost:3306/mydb?useSSLfalse&serverTimezoneUTCdriver变化: com.mysql.jdbc.Driver > com.mysql.cj.jdbc.Driver常见错误提示1:如果driver没有添加cj&#xff0c…

java xml路径_java读取xml路径

*内容如下: java 使用相对路径读取 xml 文件: 一、xml 文件一般的存放位置有三个: 1.放在 WEB-INF 下; 2.xml 文件放在/WEB-INF/classes 目录下或 class......JAVA读取xml文件中节点值_计算机软件及应用_IT/计算机_专业资料。pub...使用Java读写XML文档_计算机软件及应用_IT/计…

java string的实现_java有关String操作,实现中间 * 显示

有时,项目中一些用户名要求显示如:t***t,即用户名只显示第一个和最后一个字符,中间用*表示,可使用方法如下:public static void main(String[] args) {String a "testtest";char[] c a.toCharA…

python格式化输出 xz_python之钉钉审批导出

钉钉审批导出需要管理员协助配合并且需要参考钉钉开发文档。1、获取access_token正常情况下access_token有效期为7200秒钉钉开发指南:https://open-doc.dingtalk.com/microapp/serverapi2/eev437appkeyString是应用的唯一标识keyappsecretString是应用的密钥#!/usr/…

cas client java_CAS java client2.1.1 在Tomcat5.5.16下bug的解决

2006-07-19 10:17 | taole版主我按照你的方法试过 ,但是还是会出到访问应用程序后提示输入验证用户名和密码以后就会出现错误页面,异常如下:*************************************HTTP Status 500 ----------------------------------------…