将Ext JS用作基于Java / Spring / Hibernate的Web应用程序的一部分的最佳方法是什么?
我们想在新项目上尝试Ext JS。是否存在将Ext JS与服务器端Java(Spring / Hibernate / JS)应用程序集成的最佳实践? DWR是否是一个不错的选择?
解决方案
回答
使用Ext JS / DWR / Spring / Hibernate构建应用程序非常好。
回答
是的,有可能。
我对.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名称。
回答
我的团队已经将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.
回答
看一下Grails,它与ExtJS一起很好地发挥了作用。