9阅网

您现在的位置是:首页 > 知识 > 正文

知识

mongodb - 如何在Mongo中保存HTML并在Thymeleaf中显示

admin2022-11-04知识18

我在mongodb中存储博客文章。帖子可以有新的行(存储为\n\r)和锚标签。

{
    "header" : "Some header",
    "body" : "The first paragraph.\n\rThe second paragraph\n\r<a href=\"www.example.com\" title=\"Example\">Example text</a>",
    "languageCode" : "DE"
}

通过在我的 thymeleaf 视图中这样做,我可以显示新行。

<p th:utext="${#strings.replace(#strings.escapeXml(blogEntry.blogPost.body),'&#10;','&lt;br&gt;')}"></p>

但是锚标签却显示为纯文本。

如何将来自控制器的锚标签格式化为指向另一个网站的实际链接?



【回答】:

移除 #strings.escapeXml(...) 功能。

注意事项

使用 th:text 意味着相关字符串中的任何HTML都将被转义--即一个字符串,如 "...<br>..." 将被视为一个字面字符串。使用 th:utext 意味着该字符串将保持 未成形 - 因此,任何HTML标签中的字符串,如 "...<br>..." 将被视为HTML。

然而,如果同时使用 #strings.escapeXml(...),你是在扭转 th:utext 通过转义被处理的字符串。在这种情况下,这不是你想要的。

请注意 潜在风险 与使用 th:utext. 例如,您可能希望在将用户提供的(即不信任的)输入保存到数据存储中之前以其他方式进行转义。