Exception handling 如何防止ExtJS 4.2.1在PUT请求中处理totalProperty?

Exception handling 如何防止ExtJS 4.2.1在PUT请求中处理totalProperty?,exception-handling,extjs4,put,Exception Handling,Extjs4,Put,我们正在使用extjs4.2.1和springmvc/datarest。无论如何,在成功的GET请求中,数据rest将返回以下结构: { content: [ ... objects .... ], links: [ ... list of rel links ... ], page: { size: 25, totalElements: 4, totalPages: 1, number: 1 } }

我们正在使用
extjs4.2.1
springmvc/datarest
。无论如何,在成功的
GET
请求中,数据rest将返回以下结构:

{
    content: [ ... objects .... ],
    links: [ ... list of rel links ... ],
    page: {
        size: 25,
        totalElements: 4,
        totalPages: 1,
        number: 1
    }
}
因此,在我的代理中,我将
totalProperty
设置为
page.totalElements
。效果很好

然而,当我们发送一个
PUT
请求时,自然的(我相信也是正确的)响应是发送一个
204无内容的请求。现在,如果我们的
totalProperty
设置为类似
total
(而不是
page.xxx
)的值,那么就可以了。但是ExtJS正在尝试解析
页面.totalElements
并返回异常,因为
页面
为空


那么,我如何告诉ExtJS忽略PUT请求的totalProperty呢?

Ha。看来我找到工作了。不确定我是否喜欢,但它很管用。我更改了控制器,如下所示:

return new ResponseEntity<>("OK", HttpStatus.OK);

ExtJS似乎并不介意这一点。奇怪。

@cbmeeks,我在Ext.JS4.1.3中遇到了类似的问题,我发布了修复程序

/**
*修正了当HTTP响应为状态代码:204无内容和
*至少有一对root/totalProperty不是返回的json的直接属性
* http://www.sencha.com/forum/showthread.php?127585  
*@author rgralhoz
*/  
Ext.data.reader.Json.override({
createAccessor:(函数(){
风险值re=/[\[\.]/;
返回函数(expr){
如果(Ext.isEmpty(expr)){
返回Ext.emptyFn;
}
if(Ext.isFunction(expr)){
返回表达式;
}
if(this.useSimpleAccessors!==true){
var i=字符串(expr).search(re);
如果(i>=0){
返回外部函数工厂('obj',
“返回对象”+(i>0?
“.hasOwnProperty(“'+
表达式子字符串(0,i)+
“”)?对象“+expr+”:null”:
expr);
}
}
返回函数(obj){
返回对象[expr];
};
};
}())
});
免责声明:

请将此代码添加到项目中的
fixes.js
文件中,以覆盖Ext.js的函数。请注意:

  • 4.2.1的修复可能相同或类似
  • 一旦你覆盖了他们的函数,当你升级Ext.Js时,确保他们没有改变它,否则你会丢失他们代码的更新

  • 修复Ext.JS 3.1.1中的相同问题:
    return new ResponseEntity(HttpStatus.OK);