2012-01-06 45 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,"\\'");