onclick= "_deleteWPSchemeData(${viewWPMasterGrid.id}, '${viewWPMasterGrid.name}')"
${viewWPMasterGrid.name} 向我返回一个字符串(例如 WPWINT OFF ALL'10),它通常具有单引号字符,因此从调用 javascript 方法中我根本没有得到第二个参数。如何处理问题?
onclick= "_deleteWPSchemeData(${viewWPMasterGrid.id}, '${viewWPMasterGrid.name}')"
${viewWPMasterGrid.name} 向我返回一个字符串(例如 WPWINT OFF ALL'10),它通常具有单引号字符,因此从调用 javascript 方法中我根本没有得到第二个参数。如何处理问题?
当动态字符串可以放在 JavaScript 字符串文字中时,它应该是 JS 转义的。就像将动态字符串放在 HTML 页面中一样,它是 HTML 转义的。
使用 commons-lang StringEscapeUtils.escapeECMAScript
(或escapeJavaScript
取决于版本)来转义字符串。您可以直接从 JSP 创建一个非常简单的 EL 函数来执行此操作。
请注意,单引号可能会出现问题,但双引号、标签、EOL、反斜杠也可能会出现问题,这些都必须在 JS 字符串文字中进行转义。
看起来您可以先将第二个参数拆分为它自己的变量。如果我正确理解了您的问题。
var viewWPMasterGridName = "${viewWPMasterGrid.name}";
onclick = "_deleteWPSchemeData(${viewWPMasterGrid.id},'" + viewWPMasterGridName + "')";
尝试这个,
var name = "${viewWPMasterGrid.name}".replace(/'/g,"\\'");
利用'${viewWPMasterGrid.name.replaceAll("'", "\'")}'