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

回到顶部