【问题标题】:How to ignore HTML tags using Thymeleaf when printing text string?打印文本字符串时如何使用 Thymeleaf 忽略 HTML 标签?
【发布时间】: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 而不是文本

标签: java html spring-mvc spring-boot thymeleaf


【解决方案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;
    猜你喜欢
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多