【问题标题】:quotes problems between freemarker, java and javascript引用freemarker、java和javascript之间的问题
【发布时间】:2020-03-08 05:03:42
【问题描述】:

我对单引号有疑问,将一个单词(例如:patte't)从 java 发送到 html(freemarker),然后在“onClick”js 函数上使用该变量

我已经尝试在 java 中进行额外的转义,但变量 display 将包含 '\'(patte\'t)。在这种情况下,onClick 可以正常工作。 如果我在java中使用简单的转义,变量显示很好,但onClick deos不起作用(参数如:onClick('patte't')),在这种情况下我得到一个错误。

<tr id="contactList" onclick="Ws('${contact.id!''}','${contact.name!''}');">
some <td>
</tr>
contact.name contains a single quote in his value



ex:
Java send: pette't
html displays: pette't
onClick: error(onClick('patte't'))

Thanks everyone

【问题讨论】:

  • Ws 是做什么的?您可能需要在此处添加?replace("'", "\\'")
  • 替换后效果很好,感谢战利品:)
  • 非常适合您。我更多地查看了 freemarker 文档。发现可能?js_string更好,试试吧。

标签: javascript java freemarker


【解决方案1】:

这种情况需要两层转义:JavaScript 字符串转义,然后是 HTML 转义。

对于 JavaScript 字符串转义,使用?js_string。有了它,你会得到类似onclick="Ws('someId', 'patte\'t')" 的东西。如果名称包含",这仍然会被破坏,因为这将关闭 HTML 属性值,尽管?js_string 会将其转义为\"(因为\ 在 HTML 中没有特殊含义)。所以第二层是HTML转义,它将"替换为&amp;quot;等等。好的做法是在生成 HTML 页面时打开 HTML 自动转义;如果它没有在应用程序级别打开,请将其打开。 (如果不能,则以&lt;#ftl output_format='HTML'&gt; 开始模板。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    相关资源
    最近更新 更多