gpt4 book ai didi

javascript - 带有双引号表达式的 js_string

转载 作者:行者123 更新时间:2023-11-30 14:43:06 25 4
gpt4 key购买 nike

我们有一个 FTL 有 -

<a href='javascript:func("${event.title}");'>Link</a>

当值带有撇号时,例如 Norman'S Birthday - 它坏了。

我们使用了 js_string修复它 -

<a href="javascript:func('${event.title?js_string}');">Link</a>

但我们还必须更改 $expression 周围的双引号单引号 - 这不适用于双引号。

问题 -

有没有办法用 $expression 周围的原始双引号来解决这个问题? ?

有点像 -

<a href='javascript:func("${event.title?js_string}");'>Link</a>

请注意以上内容无效。

最佳答案

您需要在此处应用两种转义:JavaScript 字符串转义和 HTML 转义。您需要两者,因为这两种格式是独立的,并且 JavaScript 嵌入到 HTML 中。

怎么做...原始方法是 event.title?js_string?html , 但很容易忘记添加 ?html ,所以不要那样做。相反,使用自动转义(参见 https://freemarker.apache.org/docs/dgui_quickstart_template.html#dgui_quickstart_template_autoescaping )。如果由于某种原因你不能使用这种形式的自动转义(比如你正在使用一些旧的 FreeMarker 版本并且不允许升级),请将整个模板放入 <#escape x as x?html>...</#escape> .在这两种情况下,您都可以写 ${event.title?js_string} , 它会正常工作。

但是,如果您使用的是 #escape , 确保 incompatible_improvements设置(参见 https://freemarker.apache.org/docs/pgui_config_incompatible_improvements.html )至少为 2.3.20,否则 ?html不会逃脱 ' .

关于javascript - 带有双引号表达式的 js_string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49353853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com