Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JSP中向JavaScript传递特殊字符。。?_Javascript_Jsp_Jstl - Fatal编程技术网

如何在JSP中向JavaScript传递特殊字符。。?

如何在JSP中向JavaScript传递特殊字符。。?,javascript,jsp,jstl,Javascript,Jsp,Jstl,我知道javascript中有一个函数Escape(),JSTL中有一个函数escapeXml,我使用了几种方法来解决这个问题,但没有得到解决方案。 问题是 JSTL变量假设${str}的值为“system#,带有^%$/,听起来需要对字符串中的双引号和单引号进行转义 最简单的方法是使用Apache函数 使用JavaScript字符串规则转义字符串中的字符 将找到的任何值转义为JavaScript字符串形式。正确处理引号和控制字符(制表符、反斜杠、cr、ff等) 因此,选项卡变成了字符'\\'和

我知道javascript中有一个函数Escape(),JSTL中有一个函数escapeXml,我使用了几种方法来解决这个问题,但没有得到解决方案。 问题是


JSTL变量假设${str}的值为“system#,带有^%$/,听起来需要对字符串中的双引号和单引号进行转义

最简单的方法是使用Apache函数

使用JavaScript字符串规则转义
字符串中的字符

将找到的任何值转义为JavaScript字符串形式。正确处理引号和控制字符(制表符、反斜杠、cr、ff等)

因此,选项卡变成了字符
'\\'
't'

Java字符串和JavaScript字符串之间的唯一区别在于,在JavaScript中,必须转义>单引号

例如:

input string: He didn't say, "Stop!"
output string: He didn\'t say, \"Stop!\"
因此,您的servlet可以做到这一点:

request.setAttribute("str",
    StringEscapeUtils.escapeJavaScript("\"system # with ^%$ / <\""));

您也可以创建一个自定义EL函数来执行此操作(使用下面相同的
escapeJavaScript()
函数),但这更复杂。

matt问题是我正在从controller传递整个集合。因此${str}是一个jSTL变量,我如何在scriptlet标记中使用它来设置请求属性?@ayyappa:aha!在这种情况下,您应该创建一个EL函数。关于如何创建EL函数的简短说明很好。Oracle文档。@ayyappa:no。这是一个JavaScript函数,并且不做您需要做的事情。嘿,伙计们……我终于用spri解决了这个问题ng消息标记,经过3周的研究后给出javaScriptEscape=“true”!!注意,在commons lang 3.x中,它已被重命名为
escapeEcmaScript
... onclick="'${str}'" ...