所以我有一个使用 Dojo 和 Spring 的 webapp。我在应用程序中有一些使用 Json dojo 商店加载的网格。事情似乎还好,但我现在正在尝试实现排序。根据此链接,dojo 不会对 Stores 中的网格进行排序,而是将其留给服务器。好的,我假设我可以使用它,但是我在实际操作时遇到了问题。
为了将数据输入我的网格,我让它们调用由我的控制器捕获的路径。例如,要加载我的 Job 网格,dojo 创建 store 并调用 /job/data。这是我的控制器代码:
@RequestMapping(value="/job/data", method=RequestMethod.GET,
headers="Accept=application/json")
public @ResponseBody List<Job> getData() {
return jobService.getAll();
}
我正在使用 Jackson Json 处理器,因此这对于返回 Json 格式的数据非常有效。Dojo 获取数据并毫无问题地显示它。但是,当用户单击列标题进行排序时,Dojo 会附加到称为创建类似内容的路径上(例如,在对列 programName 进行排序时):/job/data?sort(+programName)
我的问题是,虽然这段代码仍然调用上述方法,但我不确定如何访问部分附加内容。我尝试使用该@RequestParam
参数,但这不起作用,实际上使该方法完全停止工作。这是我尝试过的:
@RequestMapping(value="/job/data", method=RequestMethod.GET,
headers="Accept=application/json")
public @ResponseBody List<Job> getData(@RequestParam("sort") String sort) {
log.info("Not getting here anymore");
}
有人有想法么?我想知道问题的一部分是否是附加部分没有遵循 ?sort=something 的正常语法。无论哪种方式,正如我所说,添加@RequestParam
无论如何都不适用于这种方法。我的意思是,即使该方法只是在没有附加参数的情况下再次被称为/job/data ,我也会收到错误消息。如果您需要我的更多信息,请告诉我,因为这个问题是为了工作,我真的可以使用一些见解。谢谢。
更新
经过大量搜索后,我确实找到了一个几乎解决了这个问题的链接。但是当然 Spring 家伙自己遇到了我的问题,他的代码没有解决它。他确实提到:
JsonStore 以“sort(+fieldName1,+fieldName2,-fieldName3,...)”的形式发送它的“sort”参数,这样整个东西就变成了参数key。这在 Spring MVC 中处理起来很不方便,因为它需要下拉到 HttpServletRequest 并遍历参数键以找到以“排序”开头的键,而不是能够使用 @RequestParam 处理程序参数注释。
那么有人可能知道我会怎么做吗?
更新 2
任何人?我只是在问是否有人可以为我指出如何实施我已经找到的解决方案的正确方向。如何从 spring 控制器方法访问 HttpServletRequest 对象,以便我可以访问 Dojo 发送的搞砸的排序参数?