1

这是我在 jsp 中的 java 代码:

custUrl="customer.action?custId=211&custAddressId=2341";

现在javascript代码:

function submit() {
    window.location = "<c:out value='<%=custUrl%>' />";
    //  here is generated javascript code
    //  window.location = "customer.action?custId=211&amp;custAddressId=2341"
}

FireFox 和 Chrome(IE 不进行双重转义)正在转义已经转义的值(这就是为什么我得到第二个参数名称amp;custAddressId而不是custAddressId)。

是否有任何通用解决方案可以让我在 firefox/chrome 中处理双重转义?

更新:- 所以底线是我想用 c:out 转义预期的字符(正在发生),但也想避免在将数据发送到服务器时发生双重转义,这在某些浏览器的情况下会发生

4

1 回答 1

0

默认情况下,特殊字符由<c:out>. 转义为

<c:out value='<%=custUrl%>' escapeXml='false' />

与在 XML 中&一样被转义。&amp;这里amp是 & 符号的缩写。

这不是 Firefox/Chrome 问题,因为无论您使用哪种浏览器访问您的网站,最终生成的 HTML 都是相同的。IE 的 HTML 源代码查看器必须选择以未转义的形式显示 & 符号。

于 2013-05-28T11:51:04.130 回答