Spring MVC:如何从Pageable获取不区分大小写的排序
当用户单击网页上的列标题时,我试图在Spring
MVC应用程序中支持不区分大小写的排序。呈现页面时,Thymeleaf扩展名将创建一个锚点,这href
是当前URL,带有受以下参数支持的参数Pageable
:即page,
size and sort。
该sort=propertyName,ASC
格式可以正常工作,但是我无法从URL得知如何说排序不区分大小写。我可以很容易地用代码完成它,但是标准的Pageable支持似乎并不支持它。
经过一番调试后,似乎标准框架org.springframework.data.web.SortHandlerMethodArgumentResolver
不支持org.springframework.data.domain.Sort.Order.ignoreCase
。
我对此感到有些困惑,并且想知道为什么有充分的理由吗?
我可以考虑创建自己的SortHandlerMethodArgumentResolver
类,并对其进行解析ASCI|DESCI
(表示不区分大小写)和ASCS|DESCS
(表示区分大小写)并生成适当的Sort
对象,但是这给我带来了很多工作和严肃的“代码”闻”。
我不能成为第一个偶然发现此问题的人。有人有建议吗?
回答:
我认为唯一的选择是实现自定义的SortHandlerMethodArgumentResolver。该文档为此http://docs.spring.io/spring-
data/data-
commons/docs/1.6.1.RELEASE/reference/html/repositories.html提供了简要指南。
要自定义此行为,请扩展SpringDataWebConfiguration或启用HATEOAS的等效项,并覆盖pageableResolver()或sortResolver()方法并导入自定义的配置文件,而不使用@
Enable-annotation。
对于格式,我将其设为由3个元素组成的逗号分隔的字符串:字段名称,方向,ignoreCase标志。像这样:
sort=name,ASC,ignore
最后一个元素是可选的,因此可能具有:
sort=name,ASC
这意味着ignoreCase为假。
还应该可以仅指定字段名称,例如:
sort=name
这意味着ASC和ignoreCase的默认方向为false。
唯一的问题是,如果要传递ignoreCase标志,则必须通过方向,这对我来说应该不是什么大问题。
希望这可以帮助!
顺便说一下,这是此改进的JIRA项目https://jira.spring.io/browse/DATACMNS-658(扩展了SortHandlerMethodArgument解析程序,能够检测到忽略情况的请求)
以上是 Spring MVC:如何从Pageable获取不区分大小写的排序 的全部内容, 来源链接: utcz.com/qa/400599.html