And*_*niy 7 spring conditional spring-mvc thymeleaf
我需要有条件地关闭Thymeleaf模板中的标签。说,在迭代一些元素集合期间,我必须将其中一些元素的系列包装成单个<div>:
<div>...element1, element2, element3...</div>
<div>...element4...</div>
<div>...element5, element6...</div>
Run Code Online (Sandbox Code Playgroud)
如果存在某种有条件的标记关闭方式,则可以将其存档。但我显然不能写</div th:if="...">。如果是的话,jsp我可以很容易地写出类似的东西:
<%if (condition) {%></div><%}%>
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?
编辑准确地说,我的元素不仅仅是字符串,它们是复杂的内部 html 块。
我认为最好将数据表示为单独的列表,正如您在之前的回答中提到的那样。
但即使出于好奇,也有一个丑陋的解决方法来实现类似于<%if (condition) {%></div><%}%>您所问的类似的东西。
诀窍是将标签生成为转义文本:
<th:block th:if="${openTagCondition}" th:utext="'<div>'" />
<th:block th:if="${colseTagCondition}" th:utext="'</div>'" />
Run Code Online (Sandbox Code Playgroud)
这只是出于好奇。我不建议使用此解决方法,因为它非常不可读,损害可维护性,并且您可能会留下不平衡的标签。
我找到了解决方法。应包装成单个块的系列块<div>应表示为模型内的单独列表。比如说,我有Element一堂课描述了我的element街区。所以,我的模型应该是这样的:
List<Element> elementGroups
我必须为它创建双循环:
<div th:each="group : ${elementGroups}">
<th:block th:each="element : ${group}">
...
</th:block>
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2306 次 |
| 最近记录: |