Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_Jsp_Escaping - Fatal编程技术网

如何在JSP中转义JavaScript?

如何在JSP中转义JavaScript?,javascript,string,jsp,escaping,Javascript,String,Jsp,Escaping,我完全被困在这个问题上,我试图在JSP中避开一个引用。我有一些直接输出到JS字符串中的数据,单引号似乎引起了问题 这是我的密码: var itemNameList='1〕 ${fn:replace(Desc,“'”,“\\/”)} '; 下面是我得到的输出: var itemNameList='1〕 圣巴巴拉韦兰庄园黑比诺 雷蒙德\浪子\北海岸赤霞珠 上图克城堡; 但这是错误的,我只需要/'Prodigal'/或者根本不需要单引号 编辑:或者我实际上需要用\反斜杠转义引号?正斜杠不是转义

我完全被困在这个问题上,我试图在JSP中避开一个引用。我有一些直接输出到JS字符串中的数据,单引号似乎引起了问题

这是我的密码:


var itemNameList='1〕
${fn:replace(Desc,“'”,“\\/”)}
';
下面是我得到的输出:

var itemNameList='1〕
圣巴巴拉韦兰庄园黑比诺
雷蒙德\浪子\北海岸赤霞珠
上图克城堡;
但这是错误的,我只需要
/'Prodigal'/
或者根本不需要单引号



编辑:或者我实际上需要用
\
反斜杠转义引号?

正斜杠不是转义字符。这是反斜杠

${fn:replace(Desc, "'", "\\'")}
(是的,它已经出现了两次,因为它也是Java中的转义字符!)

但是,您不仅需要用
\\'
替换
'
,还需要用
\\n
替换
\n
(换行符)。字符串被打印在多行上,这使得它也是一个无效的JS字符串变量。您的最终结果基本上必须如下所示:

var itemNameList=''
+“\n维兰庄园圣巴巴拉黑比诺”
+“\nRaymond”“浪子”“北海岸赤霞珠”
+“\nChateau Haute Tuque”;
(请注意,语法highlighter在这里同意我,但不同意你的)

然而,还有更多可能的特殊字符需要转义。他们都有保险。更容易的是创建一个自定义EL函数,该函数正好调用该方法。如果尚未完成,请下载并放入
/WEB-INF/lib
中的
commons-lang.jar
。然后创建一个
/WEB-INF/functions.tld
文件,如下所示:


自定义函数
1
http://example.com/functions
逃逸
org.apache.commons.lang3.StringEscapeUtils
java.lang.String转义码脚本(java.lang.String)
以便您可以按如下方式使用它:


...
${util:escapeJS(Desc)}

看起来它的\\'Spring有一个现成的标签:,所以如果你在使用Spring,你可以不用定义自己的自定义标签就可以使用它。OmniFaces也有一个:s:escapeBody需要是单独的答案@DavidBalažic