2012-01-06 23 views
0
onclick= "_deleteWPSchemeData(${viewWPMasterGrid.id}, '${viewWPMasterGrid.name}')" 

$ {viewWPMasterGrid.name}向我传递一个字符串(例如W.P.WINT OFF ALL'10),它通常具有单引号字符,所以从调用javascript方法中我根本没有得到第二个参数。如何处理问题?如何在jsp页面处理javascript中的单引号?

+1

的[逃避传递给js函数在一个onclick事件字符串可能行情](http://stackoverflow.com/questions/8593834/escape-possible-quotes可能重复-in-string-passed-a-js-function-in-a-onclick-event) – BalusC 2012-01-06 12:28:53

回答

1

看起来好像你可以将第二个参数分解为它自己的变量。如果我已经正确理解你的问题。

var viewWPMasterGridName = "${viewWPMasterGrid.name}"; 
onclick = "_deleteWPSchemeData(${viewWPMasterGrid.id},'" + viewWPMasterGridName + "')"; 
+0

这与他所做的一样。 – 2012-01-06 12:35:13

0

使用'${viewWPMasterGrid.name.replaceAll("'", "\'")}'

+0

您不能在JSP EL中使用replaceAll。 – 2012-01-06 12:34:07

2

当动态字符串可以将JavaScript字符串字面内部的说,它应该是JS-逃脱。就像动态字符串放在HTML页面中一样,它是HTML转义的。

使用commons-lang StringEscapeUtils.escapeECMAScript(或escapeJavaScript,具体取决于版本)转义字符串。您可以创建一个非常简单的EL函数来直接从JSP执行此操作。

请注意,您可能会遇到单引号问题,但也可能存在双引号,标记,EOL和反斜杠,它们必须全部在JS字符串文字中转义。

0

试试这个,

var name = "${viewWPMasterGrid.name}".replace(/'/g,"\\'");