将Ext JS用作基于Java / Spring / Hibernate的Web应用程序的一部分的最佳方法是什么?

时间:2020-03-05 18:55:32  来源:igfitidea点击:

我们想在新项目上尝试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一起很好地发挥了作用。