打印文本字符串时如何使用 Thymeleaf 忽略 HTML 标签?
Posted
技术标签:
【中文标题】打印文本字符串时如何使用 Thymeleaf 忽略 HTML 标签?【英文标题】:How to ignore HTML tags using Thymeleaf when printing text string? 【发布时间】:2017-11-29 20:42:34 【问题描述】:我在我的 Spring Boot 项目中使用 Thymeleaf。
我有一个包含一些 html 标签的文本字符串,我的目标是在没有样式和任何 HTML 标签的情况下打印它。
使用:
<p th:text="$myString"> </p>
我有这样的东西:
<b> text </b>
没关系,因为 myString 文本字符串的值为
String myString = "<b> text </b>";
所以尝试以其他方式做到这一点,使用:
<p th:utext="$myString"> </p>
我有这样的东西:
文字
但我的目标是得到这样的非格式化纯文本:
text
没有任何 HTML 标记且不呈现 HTML 代码的简单文本。
如何仅使用 Thymeleaf 来实现这一点?
我已经尝试了一些 th:remove="tags" 以及 th:inline="text" 但到目前为止它不起作用。
提前致谢
【问题讨论】:
明确地说,您有一个字符串"<b> text </b>"
,并且您希望它评估为text
?
没错。只是text
而不是文本。
【参考方案1】:
Thymeleaf 对此没有任何本机支持,因此您将不得不找到您最喜欢的用于删除标签的库来使用它。在这个例子中,我使用了Jsoup。
将其添加到您的 pom 文件后,应该可以这样:
<div th:text="$T(org.jsoup.Jsoup).parse(myString).text()" />
您也可以创建自己的方言来自动执行此操作,但这更复杂。然后你可以使用你自己的属性:
<div bohdan::removehtml="$myString" />
【讨论】:
谢谢!这是完美的。【参考方案2】:使用 utext 示例:
<p th:utext="$myString"> </p>
【讨论】:
【参考方案3】:你在 Thymeleaf 中使用 th:block。它只是百里香句子,不渲染html代码。
示例代码
<th:block th:text="$message"></th:block>
【讨论】:
感谢您的回答,但这不是我想要的。使用 th:block 结果仍然是<b> text </b>
以上是关于打印文本字符串时如何使用 Thymeleaf 忽略 HTML 标签?的主要内容,如果未能解决你的问题,请参考以下文章
使用 thymeleaf 在浏览器中打印 Spring Boot JSON RESTful 响应
忽略 thymeleaf #date.format() 上的语言环境