我们想在新项目上尝试 Ext JS。将 Ext JS 与服务器端 Java (Spring/Hibernate/JS) 应用程序集成是否有任何众所周知的最佳实践?DWR 是一个不错的选择吗?
5 回答
我的团队几乎一年都在使用 Ext 和 DWR,除了好话外,没有什么可说的。如果您采用这种方法,您最终将使用 DWR 生成的 JavaScript 类向服务器发出请求。这通常会代替使用 Ext.Ajax 和 Ext.data.Connection 类来完成。当您使用需要 Ext.data.Store 的类(例如,手柄、组合框等)并且想要从服务器获取数据时,您将需要使用可以与 DWR 链接的代理。用户社区提供的 Ext.ux.data.DWRProxy 为我们完美地工作:http ://extjs.com/forum/showthread.php?t=23884 。
是的,这是可能的。
我对 .NET 做了同样的事情:ext-JS 中的 UI,它通过 JSON 与服务器通信。在 .NET 世界中,您可以使用 DataContractSerializer(来自 WCF 的类)或 JavascriptSerializer (ASP.NET)
我确信在 Java 世界中也有几个很好的 JSON 序列化器。我使用了 Jabsorb(但不足以给你一个可靠的反馈)。似乎其他人已经尝试过:[链接文本][2]
[2]:http ://extjs.com/forum/showthread.php? t=30759 论坛 ext-js
在我们的应用程序中,我们像这样子类Ext.data.DataProxy:
var MyProxy = function(fn) {
this.fn = fn;
};
Ext.extend( MyProxy, Ext.data.DataProxy, {
load: function(params,reader,callback,scope,arg) {
this.fn(params,function(data) {
callback.call(scope,reader.readRecords(data),arg,true);
});
},
update: function() {}
});
您将它与这样的商店一起使用:
var store = new Ext.data.Store({
reader: myReader, proxy: new MyProxy(function(params,callback) {
// params are used for paging and searching, if you need it
callback(SomeService.getData(params));
})
// ...
});
我们实际的代理类有一些额外的调试和错误处理代码,为了简单起见,我省略了这些代码。您可能还需要稍微操作您的数据,以便Ext.data.JsonReader可以处理它,但这是基本思想。SomeService 是您为在 dwr.xml(或您的 Spring 配置)中公开的任何 bean 指定的 JavaScript 名称。
看看 Grails,它与 ExtJS 配合得很好。
使用 Ext JS/DWR/Spring/Hibernate 构建您的应用程序非常好。