Thymeleaf: How to exclude outer tag when using th:each?

白昼怎懂夜的黑 提交于 2020-01-12 13:54:12

问题


The Thymeleaf 2.1.4 official doc demonstrates the for each usage as below:

 <tr th:each="prod : ${prods}" th:class="${prodStat.odd}? 'odd'">
    <td th:text="${prod.name}">Onions</td>
    <td th:text="${prod.price}">2.41</td>
    ...
 </tr>

It generates one <tr> in each iteration, which is perfect fit in this situation. However in my case I don't need the outer tag (here, <tr>).


My use case is to generating <bookmark> tag in a recursive way, no other tags include, and a <bookmark> tag must contain a name and href attribute.

<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-4.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<body>

<div th:fragment="locationBookmark(location)">
    <bookmark th:each="map : ${location.subMaps}">
        <bookmark th:name="${map.name}"
                  th:href="'#'+${map.id}" th:include=":: locationBookmark(${map})">
        </bookmark>
    </bookmark>
</div>
</body>
</html>

the including side:

<bookmark th:include="bookmark : locationBookmark(${rootLocation})"/>

Many thanks.


回答1:


Even if it can be done using th:remove="tag" I would suggest you use th:block

<th:block th:each="map : ${location.subMaps}">
   <bookmark th:name="${map.name}"
        th:href="'#'+${map.id}" th:include=":: locationBookmark(${map})">
    </bookmark>
</th:block>



回答2:


I figured out how to solve the problem, it's easy, just addth:remove="tag" to the outer tag will do.




回答3:


You can use a DIV tag or any other HTML tag to loop with. This will not generate a TR tag. But for the table to render correctly you need to have the TD tags inside of TR tags.

<div th:each="prod : ${prods}" th:class="${prodStat.odd}? 'odd'">
    <td th:text="${prod.name}">Onions</td>
    <td th:text="${prod.price}">2.41</td>
</div>


来源:https://stackoverflow.com/questions/30914637/thymeleaf-how-to-exclude-outer-tag-when-using-theach

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!