是否可以使用 java 变量将 HTML 直接插入到速度模板中?
Is it possible to insert HTML directly into the velocity template with a java variable?
考虑以下 java 变量声明:
String s = "Please follow us on Facebook <a href=\"https://facebook.com/u/myuser\"> here</a>";
并考虑以下速度模板:
<html>
<body>
...
<div>$!s</div>
...
</body>
</html>
这会按预期工作吗?或者更确切地说,是否可以通过 java 变量将 HTML 直接插入 DOM?
我假设没有 - 我猜 HTML 个字符会被转义。
我正在努力创建一些通用模板以尽可能多地重复使用,所以我可能最终会自己测试它,但我想我会问问我是否可以为自己节省一些时间任何人都知道。此外,我已经在 Velocity 文档或 Whosebug 中找不到关于此的任何信息。
是的,有可能。
Velocity 不会逃脱 HTML 本身,因为它不仅仅适用于 HTML。通常,它不知道您用它生成什么类型的文本。
Velocity 包含一个转义工具,可用于显式转义您需要的内容:https://velocity.apache.org/tools/1.4/generic/EscapeTool.html
如果您要使用 Velocity 生成 HTML,我建议您只使用字符串变量,并转义所有传递给它的变量以进行输出。如果您需要某些变量不被转义,请使用白名单(即您不在转义器中转义的变量名称的显式列表)。
此方法将允许实施 'escape by default' 政策。
有同样的问题。
我们发现还有指令 #disable_html_escaping()
可以放在模板的开头。
考虑以下 java 变量声明:
String s = "Please follow us on Facebook <a href=\"https://facebook.com/u/myuser\"> here</a>";
并考虑以下速度模板:
<html>
<body>
...
<div>$!s</div>
...
</body>
</html>
这会按预期工作吗?或者更确切地说,是否可以通过 java 变量将 HTML 直接插入 DOM?
我假设没有 - 我猜 HTML 个字符会被转义。
我正在努力创建一些通用模板以尽可能多地重复使用,所以我可能最终会自己测试它,但我想我会问问我是否可以为自己节省一些时间任何人都知道。此外,我已经在 Velocity 文档或 Whosebug 中找不到关于此的任何信息。
是的,有可能。
Velocity 不会逃脱 HTML 本身,因为它不仅仅适用于 HTML。通常,它不知道您用它生成什么类型的文本。
Velocity 包含一个转义工具,可用于显式转义您需要的内容:https://velocity.apache.org/tools/1.4/generic/EscapeTool.html
如果您要使用 Velocity 生成 HTML,我建议您只使用字符串变量,并转义所有传递给它的变量以进行输出。如果您需要某些变量不被转义,请使用白名单(即您不在转义器中转义的变量名称的显式列表)。
此方法将允许实施 'escape by default' 政策。
有同样的问题。
我们发现还有指令 #disable_html_escaping()
可以放在模板的开头。