我有一个运行并接受HTTP请求的Spring Boot后端。
示例:http://www.myserver.com/devices/
我正在使用Pageable来处理请求以及自动分页和排序,因此我可以使用以下请求:http ://www.myserver.com/devices?sort=name,desc
但是,存在一个问题,即如果区分大小写,则无法获得所需的排序结果(不区分大小写的排序)。
我知道Pageable Sort接受了sort属性的两个参数,即sort = name,desc,但是当检查调试器时,我可以看到pageable的排序顺序对象包含一个ignoreCase属性。
这是通过REST调用的方法的代码片段:
public class DeviceController { @Autowired DeviceViewRepository deviceViewRepository; @RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public Page<DeviceView> 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()方法。
更新:
这本质上就是我的目标。我无法在此发表评论,以询问它的完成方式或提示,因此,如果有人知道如何实现该解决方案,我将非常感谢朝着正确方向的推动。
答案是(可悲的),您必须自己使用解析器解决问题-至少要等到https://jira.spring.io/browse/DATACMNS-658被解析为止
ArgumentResolver调用自己的名称,解析URL并更新Sort对象是相对简单的。我面临的挑战是确保分页控件始终使用正确的URL,而且我不得不做很多我认为不应该做的URL操作- 尽管我是Spring的新手,所以我可能做得不太好。
ArgumentResolver
我很高兴为您提供实施方法,让您有所作为,但是我没有什么可以上传可以在任何时间停留的文件。我不希望在此处放置一个链接(例如,指向保管箱),而当有人再次阅读此帖子时,该链接将在12个月后消失。
很高兴由PM提供,并让其他人将其公开发布(如果他们有能力)。