2

我想在我的文档中添加分页链接。

<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>

page是持有内容的Page对象和Pageable对象。

问题是sort=${page.pageable.sort}。它创建“排序=标题:ASC”。但我需要格式“sort=title,asc”,如Spring Data Docs的这一章中所述。我认为有比自己构建所需字符串更好的方法。这是一个普遍的问题,我认为。

创建可用排序参数字符串的最佳方法是什么?

我不需要这里显示的静态行为

  • 春天 5
  • 百里香叶 3
4

1 回答 1

0

假设您的 中有 aPageable或 a PageController因此您可以Sort通过调用它的getSort()方法来访问它。知道这SortIterable<Order>您应该能够迭代Order实例 - 每个实例都包含一对 (property, direction) - 并构建任意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方法来理解相应的解析逻辑是如何工作的。

于 2018-12-16T12:40:45.847 回答