在EXT中直接使用DWR

来源:互联网 发布:大数据的特点包含哪些 编辑:程序博客网 时间:2024/04/28 18:40

据不完全统计,从事Ajax开发的Java程序员有一大半都使用DWR。我们下面来介绍一下如何在EXT中使用DWR与后台交互。

10.10.1 在EXT中直接使用DWR

因为DWR在前台的表现形式和普通的JavaScript完全一样,所以我们不需要特地去做些什么,直接使用EXT调用DWR生成的JavaScript函数即可。以Grid为例,比如现在我们要显示一个通讯录的信息,后台记录的数据有:id、name、sex、email、tel、addTime和descn。编写对应的POJO,代码如下所示。

public class Info {
long id;
String name;
int sex;
String email;
String tel;
Date addTime;
String descn;
}
然后编写操作POJO的manager类,代码如下所示。

public class InfoManager {
private List infoList = new ArrayList();
    public List getResult() {
return infoList;
}
}

代码部分有些删减,我们只保留了其中的关键部分,就这样把这两个类配置到dwr.xml中,让前台可以对这些类进行调用。

下面是EXT与DWR交互的关键部分,我们要对JavaScript部分做如下修改,如代码清单10-7所示。

代码清单10-7 使用EXT调用DWR

var cm = new Ext.grid.ColumnModel([
{header:'编号',dataIndex:'id'},
{header:'名称',dataIndex:'name'},
{header:'性别',dataIndex:'sex'},
{header:'邮箱',dataIndex:'email'},
{header:'电话',dataIndex:'tel'},
{header:'添加时间',dataIndex:'addTime'},
{header:'备注',dataIndex:'descn'}
]);
var store = new Ext.data.JsonStore({
fields: ["id","name","sex",'email','tel','addTime','descn']
});
// 调用DWR取得数据
infoManager.getResult(function(data) {
store.loadData(data);
});
var grid = new Ext.grid.GridPanel({
renderTo: 'grid',
store: store,
cm: cm
});

注意,执行infoManager.getResult()函数时,DWR就会使用Ajax去后台取数据了,操作成功后调用我们定义的匿名回调函数。在这里我们只做一件事,那就是将返回的data直接注入到ds中。
 
DWR返回的data可以被JsonStore直接读取,我们需要设置对应的fields参数,以告诉JsonReader需要哪些属性。
在这里,EXT和DWR两者之间没有任何关系,将它们任何一方替换掉都可以。实际上它们只是在一起运行,并没有整合。我们给出的这个示例也是说明了一种松耦合的可能性,实际操作中完全可以使用这种方式。