【发布时间】:2018-09-21 21:01:25
【问题描述】:
我有一个 freemarker 模板,它在允许 HTML 的上下文和不允许 HTML 的上下文中显示相同的字符串。
Freemarker 中是否有一个内置的功能可以让我从字符串中完全删除 HTML 标记?
如下模板(假设有内置remove_html)
<#ftl output_format="HTML"/>
<html>
<head>
<title>${page_title?remove_html}</title>
</head>
<body>
<h1>${page_title?no_esc}</h1>
</body>
</html>
并且模型Collections.singletonMap("page_title", "A <strong>Strong</strong> Argument")应该导致
<html>
<head>
<title>A Strong Argument</title>
</head>
<body>
<h1>A <strong>Strong</strong> Argument</h1>
</body>
</html>
使用内置的esc 会给我<title>A &lt;strong&gt;Strong&lt;/strong&gt; Argument</title>,这不是我想要的。
有没有类似remove_html 的东西,还是我需要自己提供? (例如,使用OWASP's java-html-sanitizer。)
【问题讨论】:
-
我不会在表示层解决这样的问题,而是在业务层解决。在那里,您可以根据主标题创建标题。
标签: java html freemarker