Javascript onClick上的encodeURIComponent内联

Javascript onClick上的encodeURIComponent内联,javascript,jsp,Javascript,Jsp,我的页面上有一个链接,单击该链接时会调用一个带有2个参数的方法。其中一个参数可能具有特殊字符,如“或”等。。当我试图传递这些变量时,会出现页面错误,所以我试图在传递它们之前对它们进行编码。如何调用encodeURIComponent内联 我正在尝试这样做: <a title="${facet.toolTipDisplay}" onclick="submitFacet('Company', '${encodeURIComponent(facet.javaScriptVar)}')">

我的页面上有一个链接,单击该链接时会调用一个带有2个参数的方法。其中一个参数可能具有特殊字符,如“或”等。。当我试图传递这些变量时,会出现页面错误,所以我试图在传递它们之前对它们进行编码。如何调用encodeURIComponent内联

我正在尝试这样做:

<a  title="${facet.toolTipDisplay}" onclick="submitFacet('Company', '${encodeURIComponent(facet.javaScriptVar)}')">
我似乎得到了一个错误:

严重:Servlet jsp的Servlet.service引发异常 org.apache.jasper.JasperException:/WEB-INF/pages/SearchForm.jsp831126未指定默认命名空间时,函数encodeURIComponent必须与前缀一起使用


免责声明:我是web新手,只能访问JSP页面,而不能访问facet.javaScriptVar所在的java类。

您好,您正在尝试使用java或JS对UI组件进行编码吗?。我认为最简单的方法是使用JS函数。编码方法将取决于要编码的字符,从较少的排他性到大多数不适合URI的字符,以及

为了更加礼貌,您可以在submitFacet函数中应用编码,只需传递Company和JSTL变量

阅读你的评论,我建议在用JS处理之前先避开va内容,否则是不可能的

尝试以下两种方法之一:

onclick="submitFacet('<c:out value="${facet.javaScriptVar}"/>')"  

onclick="submitFacet('${fn:escapeJava(facet.javaScriptVar)}')" 

假设您导入taglib。

我决定用“转义撇号”替换撇号。当我的函数被调用时,转义撇号被替换为撇号,就像普通的撇号一样

这是它在HTML中的外观:

// arguments = Company, L\'Oréal (4)
onclick="submitFacet('Company', '${fn:replace(facet.toolTipDisplay, "'", "\\'")}')"
然后调用submitFacet函数时的外观:

"Company", "L'Oréal (4)"

您是否尝试过将ContentType头/元标记设置为text/html;charset=utf8?@Maz这就是我现在拥有的:@Maz SEVERE:Servlet.service for Servlet jsp抛出异常org.apache.jasper.jaspereException:/WEB-INF/pages/SearchForm.jsp831126当未指定默认名称空间时,函数encodeURIComponent必须与前缀一起使用JSTL变量可能包含特殊字符,包括撇号和JS似乎不喜欢这样。如果它们包括撇号,那么很难处理。我建议您使用这些转义函数之一,特别是转义Java。
"Company", "L'Oréal (4)"