如何在Spring Boot 1.4中的http请求中为排序参数设置IgnoreCase

我有一个Spring Boot后端运行并接受HTTP请求。

示例: http : //www.myserver.com/devices/

我正在使用Pageable来处理请求和自动分页和排序,因此我可以使用以下请求: http ://www.myserver.com/devices?sort = name,desc

然而,存在一个问题,即如果区分大小写,则不能获得所需的排序结果(不区分大小写的排序)。

我知道Pageable Sort接受sort属性的两个参数,即sort = name,desc但是在检查调试器时我可以看到pageable的sort orders对象包含ignoreCase属性。

以下是通过REST调用的方法的代码片段:

public class DeviceController { @Autowired DeviceViewRepository deviceViewRepository; @RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public Page getAllDevices(@PageableDefault(page = 0, size = 10, sort= "id") Pageable pageable) { try { return deviceViewRepository.findAll(pageable); } catch (Exception e){ throw e; } } } 

有没有办法通过请求URL,PageableDefault或任何其他方法自动/手动设置?

请记住,排序参数是动态的,有问题的方法是使用Spring Data Repository的findAll()方法。

更新:

我在这里发现了一个类似的问题: Spring MVC:如何从Pageable获得不区分大小写的排序

这基本上就是我的目标。 我不能在那里评论它是如何完成的或提示,所以如果有人知道如何实现该解决方案,我真的很感激在正确的方向上轻推。

答案是(遗憾的是)您必须自己使用解析器来处理它 – 至少在https://jira.spring.io/browse/DATACMNS-658已经解决之前,根据Spring MVC后的答案:如何从Pageable获取不区分大小写的排序 。

获取自己的ArgumentResolver是相对简单的,解析URL并更新Sort对象。 我面临的挑战是确保我的分页控件总是使用正确的URL,我不得不做很多我认为不应该进行的URL操作 – 虽然我是Spring的新手,所以我可能做得不太好。

我很乐意提供我的实现,为您提供一个headstart,但没有任何地方我可以上传任何长时间留在那里的文件。 我不想在这里放一个链接(例如到一个dropbox),这个链接在12个月的时间内不会有人再次阅读这篇文章。

很高兴由PM和其他人提供,如果他们有办法公开发布他们。