我想在我的文档中添加分页链接。
<a class="item"
th:href="@{/works(
page=${pageNum},
size=${page.pageable.getPageSize()},
sort=${page.pageable.sort})}"
th:text="${pageNum}"
th:classappend="${page.pageable.getPageNumber() eq pageNum} ? active"></a>
问题是sort=${page.pageable.sort}
。它创建“sort = title:ASC”。但是我需要格式“sort = title,asc”,如Spring Data Docs的this chapter中所述。我认为有一种比自己构建所需字符串更好的方法。我认为这是一个常见的问题。
创建可用排序参数字符串的最佳方法是什么?
我不需要显示here
的静态行为答案 0 :(得分:0)
假设您的Pageable
中有Page
或Controller
,那么您可以通过调用其Sort
方法来访问其中的getSort()
。知道Sort
是Iterable<Order>
后,您应该能够遍历Order
个实例-每个实例包含一对(属性,方向)-并构建一个任意的sort
字符串。这是一个使用Java 8流和lambda的示例,但是当然可以强制执行:
String sort = page.getSort().stream()
.map(order -> order.getProperty() + ":" + order.getDirection())
.collect(Collectors.joining(","));
model.addAttribute("sort", sort);
此示例使用":"
连接属性和方向,然后使用","
连接所有订单。根据您的评论,您想使用","
而不是":"
,但这可能会导致您在解析Order
列表时遇到其他问题。
您可能想了解SortHandlerMethodArgumentResolver
的工作原理,特别是它的parseParameterIntoSort
方法,以了解相应的解析逻辑的工作原理。