How to filter a collection in thymeleaf th:each using another property in comparison

15,623

I succeded :) Here is solution:

in controller:

(...)
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);
(...)

in html:

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

Output:

30

Hope this help

Share:
15,623
gmansoor
Author by

gmansoor

Software developer, architect, entrepreneur. Technologies: Java, PHP, Mobile, iOS, Android, Node.JS, Apache, Tomcat, Spring, Hibernate, Databases, SQL, Linux, Ubuntu, CentOS, Redhat, Clustering, Amazon AWS, Product Development, Cloud, HR, Recruitment Software

Updated on June 23, 2022

Comments

  • gmansoor
    gmansoor almost 2 years

    I am trying to filter the collection using Thymeleaf by following the example in the following url. "Projection & selection on collection" section. http://doanduyhai.wordpress.com/2012/04/14/spring-mvc-part-iv-thymeleaf-advanced-usage/

    <tr th:each="artist,rowStat : ${listArtits.?[alive == true]}">
    ...
    </tr>
    

    However I would like to use another property instead of fixed value (true/false). For example

    <tr th:each="artist,rowStat : ${listArtits.?[played > playedCountReq]}">
    ...
    </tr>
    

    where as playedCountReq is another form variable available to Thymeleaf. I get the following error. Property or field 'playedCountReq' cannot be found on object of type ...

    I tried multiple ways but no success. Any suggestions?