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