1

我的页面上有一个链接,单击该链接时会调用带有 2 个参数的方法。这些参数之一可能有特殊字符(即 ' 或 é 等)。当我尝试传递此类变量时出现页面错误,因此我尝试在传递它们之前对其进行编码。如何调用 encodeURIComponent 内联?

我正在尝试这样做:

<a  title="${facet.toolTipDisplay}" onclick="submitFacet('Company', '${encodeURIComponent(facet.javaScriptVar)}')">

我似乎得到了错误:

SEVERE: Servlet.service() for servlet jsp threw exception org.apache.jasper.JasperException: /WEB-INF/pages/SearchForm.jsp(831,126) The function encodeURIComponent must be used with a prefix when a default namespace is not specified

免责声明:我是网络新手,只能访问 JSP 页面,而不是 facet.javaScriptVar 来自的 java 类。

4

2 回答 2

0

您好,您正在尝试使用 Java 或 JS 对您的 UI 组件进行编码?我认为最简单的方法是使用 JS 函数。编码方法将取决于要编码的字符,从不太专有到大多数您有转义(不适合 uris)、encodeUriencodeUriComponent

<a  title="${facet.toolTipDisplay}" onclick="submitFacet('Company', 
    'encodeURIComponent(${facet.javaScriptVar})'">

为了更有礼貌,您可以在 submitFacet 函数中应用编码,只需传递 Company 和您的 JSTL var。

阅读您的评论,我建议在使用 JS 处理之前转义 va 内容,否则不可能。

尝试以下两种方法之一:

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

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

假设您导入Apache taglib。

于 2012-08-31T14:13:17.227 回答
0

我决定用“\'”(转义的撇号)替换撇号。当我的函数被调用时,转义的撇号被正常的撇号替换。

这是它在 HTML 中的样子:

// arguments = Company, L\'Oréal (4)
onclick="submitFacet('Company', '${fn:replace(facet.toolTipDisplay, "'", "\\'")}')"

那么 submitFacet 函数被调用时的样子:

"Company", "L'Oréal (4)"
于 2012-09-18T13:59:24.230 回答