为页面链接生成正确的URL

时间:2017-11-29 20:54:36

标签: spring spring-mvc spring-boot thymeleaf

我在Spring启动应用程序中实现了pagation。它的逻辑没有问题,但是我遇到了一个与Thymeleaf有关的奇怪问题。

现在,如果我转到以下网址

http://localhost:8080/Phoenix-listings

如果我将鼠标悬停在第2页的链接上

http://localhost:8080/2

这是错误的链接,但如果我手动转到以下网址

http://localhost:8080/Phoenix-listings/1

然后,如果我将鼠标悬停在第2页上,则链接为

http://localhost:8080/Phoenix-listings/2

应该如何。

即使我在http://localhost:8080/Phoenix-listings

,如何生成正确的链接?

以下是与我在Thymeleaf中的分页相关的部分

<div class="row">
    <div th:if="${ads.totalPages != 1}"
        class="form-group col-md-11 pagination-centered">
        <ul class="pagination">
            <li th:class="${ads.number == 0} ? disabled"><a
                class="pageLink" th:href="1">&laquo;</a></li>
            <li th:class="${ads.number == 0} ? disabled"><a
                class="pageLink" th:href="${ads.number}">&larr;</a></li>
            <li
                th:class="${ads.number == (page - 1)} ? 'active pointer-disabled'"
                th:each="page : ${#numbers.sequence(pager.startPage, pager.endPage)}">
                <a class="pageLink" th:href="${page}" th:text="${page}"></a>
            </li>
            <li th:class="${ads.number + 1 == ads.totalPages} ? disabled">
                <a class="pageLink" th:href="${ads.number + 2}">&rarr;</a>
            </li>
            <li th:class="${ads.number + 1 == ads.totalPages} ? disabled">
                <a class="pageLink" th:href="${ads.totalPages}">&raquo;</a>
            </li>
        </ul>
    </div>
</div>

1 个答案:

答案 0 :(得分:1)

在这种情况下,你应该使用内置url syntax的百里香。它看起来像这样:

th:href="@{/{page}(page=${page})}"

使用@{/}创建链接意味着百万美元会自动添加上下文(Phoenix-listings。){page}是一个占位符。 (page=${page})用变量替换占位符。

您也可以使用字符串连接,但在大多数情况下我不建议使用它(因为使用标准语法意味着百万美元可以正确编码网址)。

th:href="@{${'/' + page}}"