我有过滤器:
store.filter([Ext.create('Ext.util.Filter', {
property : "firstName",
value : Ext.getCmp("firstName").getValue(),
root : 'data'
}), Ext.create('Ext.util.Filter', {
property : "lastName",
value : Ext.getCmp("lastName").getValue(),
root : 'data'
}), Ext.create('Ext.util.Filter', {
property : "gender",
value : "MALE",//Ext.getCmp("gender").getValue(),
root : 'data'
}), Ext.create('Ext.util.Filter', {
property : "ssn",
value : Ext.getCmp("ssn").getValue(),
root : 'data'
}), Ext.create('Ext.util.Filter', {
property : "dateOfBirth",
value : Ext.getCmp('dateOfBirthTo').getValue(),
root : 'data',
operator : "<"
})]);
创建此有效负载:
{..."filter":[{"property":"firstName","value":""},{"property":"lastName","value":""},{"property":"gender","value":"MALE"},{"property":"ssn","value":""},{"property":"dateOfBirth","value":"2013-05-22T00:00:00"}]}],...}
如何更改此有效负载?我正在使用extdirectspring,它需要一些额外的参数来创建正确的过滤器。而不是{"property":"dateOfBirth","value":"2013-05-22T00:00:00"}
我需要:
{"property":"dateOfBirth","value":"2013-05-22T00:00:00", "type":"date","operator":"lte"}
答案 0 :(得分:1)
没有尝试过,但只是快速浏览一下源代码,看来你可以覆盖Ext.data.proxy.Server的encodeFilters()方法。以下是目前的情况:
encodeFilters: function(filters) {
var min = [],
length = filters.length,
i = 0;
for (; i < length; i++) {
min[i] = {
property: filters[i].property,
value : filters[i].value,
// add your custom params here
};
}
return this.applyEncoding(min);
}
换句话说,当您创建过滤器时,我相信您可以将自定义配置添加到这些过滤器,然后使用覆盖确保在请求时包含它们(如果它们存在)。