If-Else in a th:each statement in Thymeleaf

spring-mvc, thymeleaf

Solution

<div  th:if="${currentSkills != null}">
    <table>
         <tr th:each="skill : ${currentSkills}"><td th:text="${skill.name}"/></tr>
    </table>
</div>
<div th:if="${currentSkills == null}">
   You don't have any skills
</div>

If `currentSkills` is a list, you can use the `#lists` utility like so (which is more correct than the above code since it also takes into account the possibility where the object is not null but is empty):

 <div  th:if="!${#lists.isEmpty(currentSkills)}">
    <table>
         <tr th:each="skill : ${currentSkills}"><td th:text="${skill.name}"/></tr>
    </table>
</div>
<div th:if="${#lists.isEmpty(currentSkills)}">
   You don't have any skills
</div>

You could do the same if `currentSkills` is an array by just replacing `#lists` with `#arrays`.

Note that in both cases `isEmpty()` returns true whether the object is null or has zero items.

Problem

What I want is an if-else in a th:each statement in Thymeleaf. `If currentSkill != null`, then show table with content, else 'You don't have any skills' This is the code without the if/else: ``` <div th:each="skill : ${currentSkills}"> <table> <tr><td th:text="${skill.name}"/></tr> </table> </div> ```

Original source