打印文本字符串时如何使用 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" 但到目前为止它不起作用。

提前致谢

【问题讨论】:

明确地说,您有一个字符串"&lt;b&gt; text &lt;/b&gt;",并且您希望它评估为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 结果仍然是&lt;b&gt; text &lt;/b&gt;

以上是关于打印文本字符串时如何使用 Thymeleaf 忽略 HTML 标签?的主要内容,如果未能解决你的问题,请参考以下文章

使用 thymeleaf 在浏览器中打印 Spring Boot JSON RESTful 响应

ThymeLeaf 中的条件文本:如何以纯文本形式进行?

忽略 thymeleaf #date.format() 上的语言环境

Thymeleaf 将 JSON 字符串作为 JSON 对象打印到 javascript 变量中

如何使用 Angular.js 在特定长度后忽略文本

如何使用 C# 在给定文本中用忽略空格、回车或换行符替换字符串