关于用EXTJS+DWR取得后台数据然后在前台展示的问题:
关于用EXTJS+DWR取得后台数据然后在前台展示的问题:我现在在做一个项目,要用spring+hibernate+ext+dwr完成一个信息系统的设计,框架已经搭好了,...
关于用EXTJS+DWR取得后台数据然后在前台展示的问题:
我现在在做一个项目,要用spring+hibernate+ext+dwr完成一个信息系统的设计,框架已经搭好了,并且已经测试通过。
我的后台有一个方法,getAllPerson(),返回的是一个list几个,我在前台extjs里面用dwr去调用这个方法(service.getAllPerson(function(data){.........})),这里得到了一个得到data,那么我需要用extjs的上面组件存储这个data,然后怎么把这个data显示在gridPanel里面?????????????
各位大神,指导指导,dwr里面到底要怎么配置才行,data怎么才能展示出来啊,搞了几天了一点效果都没有,着急啊。
指导答案的尽量说的细一点,最好相关的代码贴出来,多谢多谢!!! 展开
我现在在做一个项目,要用spring+hibernate+ext+dwr完成一个信息系统的设计,框架已经搭好了,并且已经测试通过。
我的后台有一个方法,getAllPerson(),返回的是一个list几个,我在前台extjs里面用dwr去调用这个方法(service.getAllPerson(function(data){.........})),这里得到了一个得到data,那么我需要用extjs的上面组件存储这个data,然后怎么把这个data显示在gridPanel里面?????????????
各位大神,指导指导,dwr里面到底要怎么配置才行,data怎么才能展示出来啊,搞了几天了一点效果都没有,着急啊。
指导答案的尽量说的细一点,最好相关的代码贴出来,多谢多谢!!! 展开
1个回答
展开全部
这要看你分不分页了
如果不分页那非常简单,首先返回的list得是对象集合,且该对象已被dwr配置过Converters。然后在extjs中定义grid,store什么的,这里中端是store里record里的定义,要跟对象的属性对应上,然后调用就简单了如下:
service.getAllPerson(function(data){
store.loadData(data);
})
如果是分页的,你直接看我这个文库的文档吧,也很简单的
http://wenku.baidu.com/view/1934f200a6c30c2259019e2d.html
dwr和extjs配合还是蛮省事的,你就记得dwr掉方法返回啥,都能在extjs里解析掉,dwr方法返回对象,则在js里就能对象.属性获取值,非常方便的,我用这套框架开发了好几个项目了,对这块非常熟悉,有不会的再问我~
如果不分页那非常简单,首先返回的list得是对象集合,且该对象已被dwr配置过Converters。然后在extjs中定义grid,store什么的,这里中端是store里record里的定义,要跟对象的属性对应上,然后调用就简单了如下:
service.getAllPerson(function(data){
store.loadData(data);
})
如果是分页的,你直接看我这个文库的文档吧,也很简单的
http://wenku.baidu.com/view/1934f200a6c30c2259019e2d.html
dwr和extjs配合还是蛮省事的,你就记得dwr掉方法返回啥,都能在extjs里解析掉,dwr方法返回对象,则在js里就能对象.属性获取值,非常方便的,我用这套框架开发了好几个项目了,对这块非常熟悉,有不会的再问我~
追问
分页我现在会用了,可不可以详细讲解一下dwr转换器,比如后台返回一个list,而里面的一个个的对象,在ext里面怎么去的集合对象的属性,多谢啦!(自己找的资料大多说得模糊,按照其步骤来还是不行)
追答
给你举个例子,比方说员工(Employee)和部门(Establishment),部门一对多员工,那么员工实体类里就会有Establishment的一个对象,hibernate映射是many-to-one,一般弄成延迟加载的。
例如:class Employee{
private String id;
private String name;
.....
private Establishment establishment;
}
然后dwr.xml中
然后你dwr的方法,返回list,这里list不用声明具体的类型,List这样就行
这样后台的工作基本完成。接下来前台重要的就是store了。
var employeeStore = new Ext.data.Store({
proxy : new Ext.data.DWRProxy(service.findListByHql, true),//dwr的代理
reader : new Ext.data.ListRangeReader({
id : 'id',
totalProperty : 'totalSize'
}, employeeRecord),//这里的employeeRecord是重点,定义往下看
remoteSort : true,
sortInfo : {
field : 'id',
direction : "ASC"
}
});
var employeeRecord = new Ext.data.Record.create([
{ name:"id",type:"string",mapping:"id"
},{ name:"name",type:"string",mapping:"name"//基本属性对应到employee的实体类,类型可以是string,int等,这个看api,Ext.data.Field这个类
},{ name:"establishment",type:"auto",mapping:"establishment"//这个就是关联对象了,用auto,以后可以取到这个对象,然后通过属性直接访问,例如:establishment.id
},{ name:"establishment.name",type:"string",mapping:"establishment.name"//或者直接用这种方法,直接映射到对象的某个属性。
}
]);
这样store就建好了。store就是前台的数据库,record就是前台的表,field就是表的字段,通过dwr配置的转换器,就会把后台的对象与你前台定义的这个“表”对应起来,这样你从前台就可以像后台那样操作employee对象和establishment对象了
另外说下grid上的显示,ColumnModel的定义,它里面的列要和record里的field对应上。当然并不是所有的field都要显示,而即使不显示,只要field里有,依然可以从record里取出的。
由于字数有限制,就不能多写了,先这样吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询