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

时间:2018-03-23 12:44:19

标签: javascript java jsp parameter-passing jstl-functions

我知道这看起来很傻,但我遇到了一个必须将参数传递给javascript函数的情况,这些参数都是String类型。

数据问题是,数据可以包含single QuoteDouble quote

e.g。

“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
}

问题是调用showPopup()方法无效的调用/语法。

1 个答案:

答案 0 :(得分:1)

使用&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;"), "\'", "\\\'")