在来自 jstl 的 JavaScript 函数参数中传递单引号和双引号(非常棘手)

Passing single and double quotes both in JavaScript function parameter from jstl (much tricky)

我知道这个问题看起来很愚蠢,但我遇到了一种情况,我必须将参数传递给 javascript 函数,而这些参数是 String 类型。

数据的问题是,数据可以有 single QuoteDouble quote

例如

"TEST"、TESTTEST。这是来自数据库。

这是我点击时的 JSTL 调用。

第二个参数值为 ANOTHER " company" 这才是真正的根本原因。

我也尝试了 JSTL fn: replace(.....) 方法,但没有成功。

注:也可以是'ANOTHER' Company.

<a href="javascript:void(0);" 
  onclick="return showPopUp('${account.fName}','${fn:replace(account.lName, "\'","\\'")}','${fn:replace(account.compName, "\'", "\\'")}','${account.firstTimePin}','${account.email}');return false;">
</a>

这会生成以下 HTML 代码。

<a href="javascript:void(0);" 
   target="_self" 
   onclick="return showPopup('CRUISE  ','ANOTHER " company"','123456','user@directbiller.com');">
</a>

这是我的 javascript 函数

function showPopup(param1,param2,param3,param4){
  // busness logic
}

问题是call/syntax调用showPopup()方法无效。

&quot;编码。

function showPopup() { console.log(arguments); }
<a href="javascript:void(0);" target="_self" 
    onclick="return showPopup('CRUISE  ','ANOTHER &quot; company&quot;','123456','user@directbiller.com');">
    Link
</a>

只需添加另一个替换项,即

fn:replace(fn:replace(account.compName, "\"", "&quot;"), "\'", "\\'")