3

我正在尝试这个名为jQuery Bootgrid的网格组件。在 AJAX 模式下,它POST是服务器的参数,与排序相关的参数是这样发送的:

sort[colname]=desc

colname部分会根据您对网格的排序方式而有所不同。

Spring MVC 中有什么方法可以@RequestParam用来捕获该sort参数吗?

例如,类似:

@RequestParam("sort[{\\*}]") Map<String, String> sort

这只是一个疯狂的猜测,我怀疑是否有任何干净的方法可以做到这一点。关于如何处理它的任何建议都会很棒。


更新:还尝试了这个我认为可能有效的更简单的版本

@RequestParam("sort") Map<String, String> sort
4

1 回答 1

2

参见 bootgrid 论坛:https ://github.com/rstaib/jquery-bootgrid/issues/111

这真的很傻,但是由于无法在服务器端解析动态参数,因此您需要通过在 bootgrid 配置中定义 requestHandler 从排序参数创建新的请求参数,方法如下:

requestHandler: function (request) {
  if (request.sort) {
    request.sortBy = Object.keys(request.sort)[0]; //this only gets first sort param
    request.sortDir = request.sort[request.sortBy];
    delete request.sort
  }
  return request;
}

在 Spring 控制器中:

@RequestParam(value = "sortBy", required = false) final String sortBy,
            @RequestParam(value = "sortDir", required = false) final String sortDir

不要忘记将这些参数标记为不需要,因为排序并不总是发布到服务器端。

于 2016-01-18T10:16:29.777 回答