单引号JSP到JavaScript函数

时间:2012-08-10 10:40:45

标签: javascript html jsp escaping

我有一个必须用于传递给JavaScript函数的字符串。我尝试了很多方法,但我仍然无法使它发挥作用。

<a href="javascript:goFac('<%=name%>')"><%=name%></a>

名称字段是一个包含单引号的字符串,例如 It's Morning 。我试过用:

String nameString = rs.getString("name");
nameString = nameString.replaceAll("'","\'");

<a href="javascript:goFac('<%=nameString %>')"><%=nameString%></a>

nameString = URLEncoder.encode(nameString);

nameString = nameString.replaceAll("'","&#39;");

 nameString = nameString.replaceAll("'","&apos;");

我仍然无法让它发挥作用。而且我也不能选择EL。

4 个答案:

答案 0 :(得分:1)

如果要在Java代码中使用JavaScript转义(反斜杠)单引号(\')替换String中的单引号('),则需要转义反斜杠字符(使用反斜杠!)。例如:

nameString = nameString.replaceAll("'","\\'"); 

另请参阅:String.replaceAll single backslashes with double backslashes

答案 1 :(得分:1)

尝试使用 String.fromCharCode(39)而不是单引号,String.fromCharCode(39)是单引号的ASCII代码。

答案 2 :(得分:0)

以下对我有用,因为HTML编码在函数调用之前完成,并用&#39;替换了单引号。

nameString = nameString.replaceAll("&#39;","\\'");

答案 3 :(得分:0)

如果你在JSP标记内部进行,你需要有足够的反斜杠来实际进入网页。代码是:

<a href="javascript:goFac('<%=nameString.replaceAll("'", "\\\\'") %>')"><%=nameString%></a>

你需要一个反斜杠来逃避另一个反斜杠,并且每个都需要被转义 - 因此有四个反斜杠(yuck)。

希望有所帮助。