如何在对象Property上过滤Thymeleaf中的对象列表

时间:2016-04-18 23:02:17

标签: thymeleaf

我尝试在StackExchange上搜索,并使用Google和Thymeleaf参考查看了其他地方。看起来下面的语法应该可行,但它不会根据给定的条件过滤列表。

<th:block th:each="dayNumber :${#numbers.sequence(1,7)}">
     <p th:if="${#lists.isEmpty(storeHours.?[#this.dayOfWeek eq #dayNumber])}" th:text="${dayNumber}"></p>
</th:block>

在上面,我们尝试做一个非常简单的过滤器。 storeHours是Store Hours对象的列表。每个对象都有一个名为dayOfWeek的属性。这是一个整数。在上面,我试图简单地打印丢失的日期号码。但是,它打印所有7天。

我确信我在这里遗漏了一些非常基本的东西。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

试试这段代码:

<th:block th:each="dayNumber :${#numbers.sequence(1,7)}">
    <p th:if="${#lists.isEmpty(storeHours.?[dayOfWeek.equals(dayNumber)])}" th:text="${dayNumber}"></p>
</th:block>

也许您需要检查storeHours是否为空? 然后是${not #lists.isEmpty(...)}

答案 1 :(得分:0)

在控制器中:

(...)
Person p1 = new Person();
p1.setAge(20);
Person p2 = new Person();
p2.setAge(30);
List<Person> list = Lists.newArrayList(p1,p2);
modelMap.addAttribute("list", list);
Integer minAge = 13;
modelMap.addAttribute("minAge", minAge);
(...)

在html中:

<table th:with="min=${minAge}">
<tr th:each="person,rowStat : ${list.?[age > __${min}__]}">
<td><span th:text="${person.age}"></span></td>
</tr>
</table>

输出:

30