我们使用的是backbone.paginator;backgrid;backgrid-filter ;backgrid-paginator它工作得很好,我们尝试排序时遇到了一些小问题--在server side mode -the网格中按一个(或多个)列排序。
对于服务器端are使用Spring和org.springframework.data.web.PageableHandlerMethodArgumentResolver
在调试应用程序时,来自客户端的order似乎在春季端没有得到很好的解析,它落在了default value上。
两个问题:
PageableHandlerMethodArgumentResolver的参数是什么?Backbone.PageableCollection进行调整以实现这一目标?我们的初始化分页器代码
Backbone.PageableCollection.extend({
state : {
pageSize : 15,
firstPage : 0, /* Spring paging is 0-based */
},
mode : "server",
/**
* override default queryParams to fit spring pageable var names
*/
queryParams : {
pageSize:"size",
totalRecords:"totalElements",
sortKey:"sort",
order:"sort_order",
directions : { "-1": "asc", "1": "desc" }
},
})P.S:
看来,spring期望将data作为由comma分隔的数组,而不是常规的。知道怎么用backbone.paginator吗?或者如何更改spring,使其能够解析分页器以支持多个sorting parameters。
发布于 2015-03-03 08:26:26
在对Spring源代码PageableHandlerMethodArgumentResolver和SortHandlerMethodArgumentResolver.java (可以找到这里)做了一些研究之后,看来Spring排序参数的格式为
sort="column1,column2,column3...,order"&sort="column4,column5,...,order"backbone.paginator似乎不支持多重排序,但是为了使paginator支持具有信号排序的SortHandlerMethodArgumentResolver,可以重写sync函数来设置vars。
示例
var sync = Backbone.PageableCollection.prototype.sync;
Backbone.PageableCollection.prototype.sync = function(method, model,
options) {
options.type = 'POST' // this help with unicode on tomcat and can be removed..
/**
* @override sync Add some code to support parsing of sorting parameters
* by SortHandlerMethodArgumentResolver
*/
if (!options.data) {
sync.apply(this, arguments)
}
var sortKey = _.result(this.queryParams,"sortKey");
if (!sortKey in options.data) {
sync.apply(this, arguments)
}
options.data[STR_SPRING_SORT] = options.data[sortKey]
var orderKey = _.result(this.queryParams,"order");
var STR_SPRING_SORT = "sort";
var STR_SEPERATOR = ",";
if (orderKey in options.data) {
options.data[STR_SPRING_SORT] = options.data[STR_SPRING_SORT] + STR_SEPERATOR
+ options.data[orderKey]
if (sortKey !== STR_SPRING_SORT) {
delete options.data[sortKey];
}
delete options.data["order"];
}
sync.apply(this, arguments);
};备注
可以强制spring更改comma和sort字符串。
https://stackoverflow.com/questions/28825455
复制相似问题