如何在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和其他人提供,如果他们有办法公开发布他们。
- Tomcat6忽略web-inf / lib
- 如何在spring / hibernate / jpa中创建自动表创建?
- 无法找到JAX-WS架构http://jax-ws.dev.java.net/spring/servlet.xsd
- Hibernate:安全地将对象重新附加到会话中
- 创建Maven项目,无法解析原型,拒绝连接
- Hibernate / JPA + Derby – SELECT语句在GROUP BY,ORDER BY或选择列表中包含太多项
- Eclipse + Maven + JavaServer Faces – > ClassNotFoundException:StartupServletContextListener
- 从netbeans运行java applet?
- 如何在Intellij IDEA中复制maven依赖项以输出工件WEB-INF / lib?