javascript - freemarker、java和javascript之间的引用问题

标签 javascript java freemarker

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

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

<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

最佳答案

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

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

关于javascript - freemarker、java和javascript之间的引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58819493/

相关文章:

javascript - 如何在 fabricjs canvas 对象上触发 mousedown 事件?

javascript - 更改 div bgcolor onkeypress

java - 如何使用 Byte Buddy 和 @Advice 捕获返回数据?

java - FreeMarker如何在模板中调用object.toString()方法

javascript - 循环遍历两个列表,从第一个列表中获取值,将它们添加到第二个列表中

php - 在 PHP 中回显 javascript 时出错

java - 我如何使用 Java 解析 Wikiquotes 响应?

java - 如何在 DROPBOX 中使用 MULTIPART 文件上传来上传文件

java - 检查常量值的 Freemarker 模板

javascript - 如何将freemarker列表中包含特殊字符的复杂元素解析为javascript数组