Ext JS を新しいプロジェクトで試してみたい。Ext JS をサーバー側の Java (Spring/Hibernate/JS) アプリケーションと統合するためのよく知られたベスト プラクティスはありますか? DWRはそのための良い選択ですか?
5 に答える
私のチームは、DWR で Ext をほぼ 1 年間使用しており、良いことしか言えません。このアプローチを採用すると、DWR が生成した JavaScript クラスを使用して、サーバーへのリクエストを作成することになります。これは、Ext.Ajax および Ext.data.Connection クラスを使用する代わりに行われることがよくあります。Ext.data.Store を必要とするクラス (グリップ、コンボ ボックスなど) を使用し、サーバーからデータを取得する場合は、DWR とリンクできるプロキシを使用する必要があります。Ext.ux.data.DWRProxy が提供するユーザー コミュニティは、問題なく動作しました: http://extjs.com/forum/showthread.php?t=23884。
このアプリケーションでは、次のように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 名です。
はい、可能です。
私は .NET で同じことをしました: JSON を介してサーバーと通信する ext-JS の UI。.NET の世界では、DataContractSerializer (WCF のクラス) または JavascriptSerializer (ASP.NET) を使用できます。
Java の世界にも優れた JSON シリアライザーがいくつかあると確信しています。私はJabsorbを使用しました (ただし、確かなフィードバックを与えるには十分ではありません)。他の人が試したようです: [リンクテキスト][2]
[2]: http://extjs.com/forum/showthread.php?t=30759フォーラム ext-js
Grails を見てみましょう。ExtJS とうまく連携します。
Ext JS / DWR / Spring/Hibernateを使用してアプリケーションをビルドすることはまったく問題ありません。