假设我有一个包含嵌套无序列表的基本静态HTML页面:
<ul>
<li>Item 1</li>
<li>Item 2
<ul>
<li>Sub-item 2.1</li>
<li>Sub-item 2.2</li>
</ul>
</li>
<li>Item 3</li>
</ul>
这是有效的XHTML。大。
现在,我正在通过th:text
应用Thymeleaf的国际化(如果它很重要,我不相信它,这是在Spring应用程序中)。
<ul>
<li th:text="#{mypage.item1}">Item 1</li>
<li th:text="#{mypage.item2}">Item 2
<ul>
<li th:text="#{mypage.item2.1}">Sub-item 2.1</li>
<li th:text="#{mypage.item2.2}">Sub-item 2.2</li>
</ul>
</li>
<li th:text="#{mypage.item3}">Item 3</li>
</ul>
假设我的mypage.properties
设置正常并且工作正常,一旦Thymeleaf处理上述内容,结果将显示为:
<ul>
<li>Item 1</li>
<li>Item 2
</li>
<li>Item 3</li>
</ul>
我的子项目在哪里用于第2项,如何在单独使用它们的同时将它们取回?我知道th:utext
,但我不希望mypage.item2
包含整个子列表的完整HTML。有可能吗?
编辑:如果我将代码更改为以下代码,则可以获得我正在寻找的内容,但它不再是有效的XHTML。我正在寻找有效的XHTML解决方案。
<ul>
<li th:text="#{mypage.item1}">Item 1</li>
<li th:text="#{mypage.item2}">Item 2</li>
<ul>
<li th:text="#{mypage.item2.1}">Sub-item 2.1</li>
<li th:text="#{mypage.item2.2}">Sub-item 2.2</li>
</ul>
<li th:text="#{mypage.item3}">Item 3</li>
</ul>
答案 0 :(得分:2)
首先要理解:th:text
在标签关闭之前更改所有内容,因此行为并不令人意外。
<ul>
<li th:text="#{mypage.item1}">Item 1</li>
<li><span th:text="#{mypage.item2}" th:remove="tag">Item 2</span>
<ul>
<li th:text="#{mypage.item2.1}">Sub-item 2.1</li>
<li th:text="#{mypage.item2.2}">Sub-item 2.2</li>
</ul>
</li>
<li th:text="#{mypage.item3}">Item 3</li>
</ul>
应该可以使用{或3}}
<ul>
<li th:text="#{mypage.item1}">Item 1</li>
<li><th:block th:text="#{mypage.item2}">Item 2</th:block>
<ul>
<li th:text="#{mypage.item2.1}">Sub-item 2.1</li>
<li th:text="#{mypage.item2.2}">Sub-item 2.2</li>
</ul>
</li>
<li th:text="#{mypage.item3}">Item 3</li>
</ul>
使用th:block
,应该可以避免额外的节点th:block
。