pvo*_*orb 1 html java freemarker
我有一个 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>
Run Code Online (Sandbox Code Playgroud)
该模型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>
Run Code Online (Sandbox Code Playgroud)
使用内置的esc会给我带来<title>A <strong>Strong</strong> Argument</title>相反的结果,这不是我想要的。
是否有类似的东西remove_html或者我需要提供自己的东西?(例如,使用OWASP 的 java-html-sanitizer 。)
您可以使用 Freemarker 内置字符串替换函数和“r”标志来启用正则表达式。
这是一个简单的正则表达式,可以解决这个问题:
${page_title?replace('<[^>]+>','','r')}
Run Code Online (Sandbox Code Playgroud)
请注意,如果您在正则表达式中使用反斜杠,则必须对其进行转义,如下所示(删除空格的人为示例):
${page_title?replace('\\s+','','r')}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5751 次 |
| 最近记录: |