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