ExtJS発POST要求パラメータ形式がJSON

1757 ワード

背景
これは私の怠け者から言います.技術フレームワークExtJS+resteasy、デフォルトの要求方式はajax getで、このバックグラウンドの方法は多くの@QueryParamを書いてパラメータを取得します.私はフロントでajax postリクエストを使うのが好きです.バックグラウンドメソッドパラメータはmapで、すべてのフロントパラメータはmapのkey-valueにマッピングされ、map-->json(com.alibababa.fastjson)-->pojoオブジェクトにマッピングされます.
ここでfastjson変換データ型はインテリジェントで、integer、dateタイプは基本的にカスタマイズ方法を必要とせずに完璧に変換されることを称賛しなければならない.

Googleで便利なソリューションを見つけ、カスタムエージェントproxyでPOSTリクエストの送信を実現し、パラメータタイプをjsonと指定します.
Ext.define('Ext.ux.data.proxy.JsonAjaxProxy', {
extend:'Ext.data.proxy.Ajax',
alias:'proxy.jsonajax',
actionMethods : {
create: "POST",
read: "POST",
update: "POST",
destroy: "POST"
},
buildRequest:function (operation) {
var request = this.callParent(arguments);
       // For documentation on jsonData see Ext.Ajax.request
        request.jsonData = request.params;
        request.params = {};
       return request;
},
/*
* @override
* Inherit docs. We don't apply any encoding here because
* all of the direct requests go out as jsonData
*/
applyEncoding: function(value){
return value;
}
});

 
 
使いやすいのでproxyのtypeをjsonajaxに設定すればいいです.
proxy : {
   type : 'jsonajax'
   ...
}