Thymeleaf th: если выражение не оценивает true

Я пытаюсь оценить выражение с двумя строками, оно также оценивается как true, но при использовании внутри th:if оно не работает должным образом.

приведенный ниже код - это то, что я пытаюсь

<div th:with="cntx=${#httpServletRequest.getRequestURI()}">
   <li th:each="obj : ${list}" th:with="path=${obj.path}"
                    th:if="${path == cntx}">
    <span th:text="${obj.title}"></span>
   </li>
</div>

Контекст для приведенного выше кода,

У меня есть список объектов, которые содержат ссылку, которая должна отображаться в одном из объектов. Я пытаюсь установить равенство строк с помощью th:if, но выражение здесь ${path == cntx} по какой-то причине не работает и не отображается на окончательно отображаемой странице.

Я даже проверил значения пути и URI, которые равны, т.е. /test для пути и /test для cntx, оценивая их как true, если я распечатаю их, используя th:text. Довольно странное поведение.


person kashipai    schedule 02.06.2014    source источник


Ответы (1)


Я предполагаю, что if оценивается до th:with. Вы можете попробовать:

<th:block th:each="obj : ${list}" th:with="path=${obj.path}">
  <li  th:if="${path == cntx}">...</li>
</th:block>

Однако для меня это напечатало бы какое-то полезное исключение (например: путь к переменной не найден).

person NoDataFound    schedule 02.06.2014
comment
Спасибо за совет .. Работал как шарм. :) - person kashipai; 02.06.2014