Как фильтровать коллекцию в thymeleaf th: каждый, используя другое свойство в сравнении
Я пытаюсь отфильтровать коллекцию с помощью Thymeleaf, следуя примеру в следующем url-адресе. Раздел" проекция и выбор в коллекции". http://doanduyhai.wordpress.com/2012/04/14/spring-mvc-part-iv-thymeleaf-advanced-usage/
<tr th:each="artist,rowStat : ${listArtits.?[alive == true]}">
...
</tr>
однако я хотел бы использовать другое свойство вместо фиксированного значения (true/false). Например
<tr th:each="artist,rowStat : ${listArtits.?[played > playedCountReq]}">
...
</tr>
где as playedCountReq-еще одна переменная формы, доступная для Thymeleaf. Я получаю следующая ошибка. Свойство или поле 'playedCountReq' не найдена на объект типа ...
Я пробовал несколько способов, но безуспешно. Есть предложения?
2 ответов
я уступил:) вот решение:
в контроллере:
(...)
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
надеюсь, что это поможет
в фильтре выбора неквалифицированные свойства относятся к элементу фильтруемой коллекции. Но, переменная #root
всегда определяется как корневой объект контекста. Так можно ссылаться на переменные на корневом уровне из фильтра выбора.
<tr th:each="artist,rowStat : ${listArtists.?[played gt #root.playedCountReq]}">
…
</tr>
смотрите на "переменные #this и #root" раздел в документации Spring EL для получения дополнительной информации.