【问题标题】:Using th:classappend based on request param根据请求参数使用 th:classappend
【发布时间】:2017-06-07 12:58:48
【问题描述】:

我使用 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 参数进行区分(仅在somepage 页面上)。

是用request.getQueryString() 做一些骇人听闻的事情的唯一方法吗?

【问题讨论】:

    标签: thymeleaf


    【解决方案1】:

    找到答案。 HttpServletRequest 有一个实用程序,可以很容易地访问:

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

    【讨论】:

    • 对于仍在使用 thymeleaf 2.x 的用户,请将 #request 替换为 #httpServletRequest
    • 真的应该有人升级 :)
    • 哈!我昨天终于咬紧牙关了
    猜你喜欢
    • 2015-05-26
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 2022-01-28
    相关资源
    最近更新 更多