Thymeleaf:在一个元素中包含2个循环和一个if语句

问题描述 投票:0回答:1

在thymeleaf中,我为每个循环都这样:

<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'(bootstrap)和th:text =days.day

其他

th:text=days.day

因此,如果在items中的一天与days中的一天匹配,那么<li>元素将设置为class=active并使<li>可以点击href="/myurl"。无论哪种方式,来自days的那天是th:text<li>

对不起,如果这很难理解,我试着尽可能清楚。

编辑:这是最新的尝试:

<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>
thymeleaf
1个回答
0
投票

我想你可以用conditional expressions实现这一目标。简单地写一些像

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

此代码还使用#lists,这是Thymeleaf非常有用的功能。

© www.soinside.com 2019 - 2024. All rights reserved.