2017-01-23 5 views
1

У меня есть следующая навигация с помощью Thymeleaf, и я хочу, чтобы добавить класс CSS, если выбрана ссылка:Использования я: classappend на основе запроса паров

<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()?

ответ

1

Найден ответ. Там есть утилита для HttpServletRequest, которые могут быть легко доступны, как, например:

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

+1

для тех, кто все еще использует thymeleaf 2.x, замените #request с #httpServletRequest – ashario

+0

кто-то должен действительно модернизировать :) – bphilipnyc

+0

ха! вчера я укусил пулю – ashario

Смежные вопросы