安全地将字符串传递给javascript

时间:2013-02-18 20:55:15

标签: java javascript jstl

我正在尝试将我的java代码中的字符串传递给javascript,如下所示:

myData.data = "${data.myString}";

如果myString包含"

,则会中断

我尝试存储一个javascript安全字符串,只是将"替换为\"但是当我在我的jsp中使用myString时,我得到一个丑陋的输出显示\"而不是"

安全传递字符串的最佳方法是什么,而不是弄乱其余的输出。

3 个答案:

答案 0 :(得分:1)

将其编码到JSP中的html:

<input id="test_hide" type="hidden" value="${URIUtil.encodeAll("http://www.google.com?q=a b","UTF-8")}">

然后在JavaScript中:

 myData.data = decodeURIComponent(document.getElementById('test_hide').getAttribute('value'));

Java - Convert String to valid URI object

答案 1 :(得分:0)

&quot;替换双引号应该有效

答案 2 :(得分:0)

一个糟糕的解决方案:

检查你的字符串是否有双引号,如果是,则使用

myData.data = '${data.myString}';

如果它包含单引号,请使用

myData.data = "${data.myString}";

如果您同时使用单引号和双引号,则会爆炸。

一个好的解决方案:

只需使用

&quot;