Thymeleaf th:text - 放置文本而不删除 HTML 结构
Posted
技术标签:
【中文标题】Thymeleaf th:text - 放置文本而不删除 HTML 结构【英文标题】:Thymeleaf th:text - Put a text without removing HTML structures 【发布时间】:2014-09-24 04:05:31 【问题描述】:我是 thymeleaf 的新手,我尝试创建一个模板。我的问题是这段代码:
代码
<h1 th:text="$header.title" >
title
<small th:text="$header.subtitle" >Subtitle</small>
</h1>
我想得到这个输出:
<h1> TITLE <small> SUBTITLE</small> </h1>
但这是真正的输出:
<h1> TITLE </h1>
我该怎么做才能不删除“小”内部的内容?
【问题讨论】:
【参考方案1】:我遇到了同样的问题。 答案是th:inline='text'
这应该可以解决您的问题
<h1 th:inline="text" >
[[$header.title]]
<small th:text="$header.subtitle">Subtitle</small>
</h1>
或者你也可以使用th:remove="tag"
<h1>
<span th:text="$header.title" th:remove="tag">title</span>
<small th:text="$header.subtitle" >Subtitle</small>
</h1>
【讨论】:
在所有其他答案中,这个是最有用和最切题的。它完全解决了我的问题。 内联参考:thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#inlining 为什么不th:utext
?
就我而言,静态文本已被 th:(u)text 删除。这个解决方案修复了它。
@NickSavenia - th:utext
会起作用,但它是一个“更脏”的解决方案,因为它意味着将要显示的文本与格式混合,这将更难维护。这就是我们将静态文本外部化到属性文件的原因。【参考方案2】:
不管标签的语义如何,正确答案是这个:
<h1>
<span th:text="$header.title" th:remove="tag">title</span>
<small th:text="$header.subtitle" >Subtitle</small>
</h1>
这样 Thymeleaf 去掉了 de <span>
标签,结果就是你所期望的:
<h1>
TITLE
<small>SUBTITLE</small>
</h1>
问候!
【讨论】:
【参考方案3】:除了@Faraj 回复,你也可以像这样使用th:block
<h1>
<th:block th:utext="$header.title"/>
<small th:text="$header.subtitle" >Subtitle</small>
</h1>
【讨论】:
这很棒。谢谢【参考方案4】:我不确定您在尝试什么,因为您的h1
中的small
标签不会显得很小。 Thymeleaf th:text
标签将替换您的 h1
标签中的所有文本,这就是您的输出仅显示“TITLE”的原因。您应该将<small>
标签放在h1
标签之外。
<h1 th:text="$header.title">title</h1>
<small th:text="$header.subtitle">Subtitle</small>
我相信你正在寻找这个答案:
<h1>
<span th:text="$header.title" th:remove="tag">title</span>
<small th:text="$header.subtitle">Subtitle</small>
</h1>
【讨论】:
问题是我使用的模板。如果 在之外看起来会有所不同。
以上是关于Thymeleaf th:text - 放置文本而不删除 HTML 结构的主要内容,如果未能解决你的问题,请参考以下文章
如何在 reactJS 中使用 Thymeleaf th:text