Thymeleaf: 2 цикла и оператор if внутри одного элемента - PullRequest
0 голосов
/ 02 сентября 2018

В тимелист у меня есть для каждой петли, вот так:

<ul  class="days">  
  <li th:each="day : ${days}" th:text="${day}" >1</li>

</ul>

Это успешно перечисляет все строки в массиве с именем days, который заполняется как ["1", "2", "3" ... "31"], представляющем дни в данном месяце.

У меня также есть массив items, который также содержит дни в виде строк.

Вот что я хочу сделать в псевдокоде, но пытаюсь понять, как этого добиться:

За каждый день в days; За каждый день в items; если items.day = days.day, затем установите 'class=active' (начальная загрузка) и th:text =days.day

еще

th:text=days.day

Таким образом, если в items есть день, который совпадает с днем ​​в days, тогда элемент <li> устанавливается в class=active и делает <li> кликабельным с помощью href="/myurl". И так или иначе день с days является th:text из <li>.

Извините, если это трудно понять, я попытался сделать это как можно яснее.

EDIT: Это последняя попытка:

<ul class="days">

    <li th:each="s : ${days}" th:with="found=${false}">
        <span th:each="item : ${items}" th:if="{$item.day == s}"> 
                <span th:text="${s}" th:classappend="active" th:href
                       th:with="${found} = true"></span>

        </span> 

        <span th:if="{$found == false}">
             <span th:text="${s}"></span>

        </span>
    </li>

</ul>

1 Ответ

0 голосов
/ 03 сентября 2018

Я думаю, что вы можете достичь этого с помощью условных выражений . Просто напишите что-то вроде

<span th:text="${s}" th:classappend="${#lists.contains(items, s)}? 'active' : ''">

В этом коде также используется #lists, очень полезная функция Thymeleaf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...