freemarker,java和javascript之间的引用问题

问题描述 投票:1回答:1

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

我已经尝试在Java中进行额外的转义,但是变量显示将包含'\'(patte \'t)。在这种情况下,onClick可以正常工作。如果我在Java中使用简单的转义符,则变量显示很好,但是onClick取消运行(参数: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
javascript java freemarker
1个回答
0
投票

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

对于JavaScript字符串转义,请使用?js_string。这样,您会得到类似onclick='Ws('someId', 'patte\'t')'的信息。由于\'关闭了HTML属性值(就浏览器而言,严格遵循HTML规则,其中\没有特殊含义,这与JavaScript中不同),这仍然是无效的。因此,第二层是HTML转义,您将获得onclick='Ws('someId', 'patte\&#39;t')'。好的做法是在生成HTML页面时打开HTML自动转义。如果未在应用程序级别上将其打开,则将其打开。 (如果无法再用<#ftl output_format='HTML'>启动模板。)

© www.soinside.com 2019 - 2024. All rights reserved.