使用th:classappend基于请求参数

时间:2017-01-23 04:22:16

标签: thymeleaf

我使用Thymeleaf进行以下导航,并且我想在选择链接时附加CSS类:

<div class="nav-links">
    <a th:href="@{/somepage(someId=${someId},filter='filterA')}" href="/somepage"
    class="subnav-item"
    th:classappend="${selected}">Filter A</a>

    <a th:href="@{/somepage(someId=${someId},filter='filterB')}" href="/somepage"
    class="subnav-item"
    th:classappend="${selected}">Filter B</a>

    <a th:href="@{/somepage(someId=${someId},filter='filterC')}" href="/somepage"
    class="subnav-item"
    th:classappend="${selected}">Filter C</a>
</div>

假设有些样式:

    .subnav-item.selected, .subnav-item.selected:hover, .subnav-item.selected:focus {
        background-color: #FFF;
        border-color: #000;
    }

查看this question,可以根据页面的URI轻松完成(在本例中为somepage,但我需要根据请求参数选择性地工作(在这种情况下) ,filter)。有一种简单的方法吗?

我尝试将selected值添加到服务器端的模型中,并单独尝试使用请求本身,但它没有根据filter参数进行区分(仅在{{1}上) } page)。

是使用somepage做一些hacky东西的唯一方法吗?

1 个答案:

答案 0 :(得分:1)

找到答案。 HttpServletRequest有一个可以轻松访问的实用工具:

th:classappend="${#request.getParameter('filter') == 'filterA' ? 'selected' : ''}"