我有jsp代码:
onclick="showURL('${result.url}')"
${result.url}
是动态值。当撇号进入URL时,我收到错误。
我尝试了所有方法,例如escape,encodeURI,用double替换单引号但没有任何效果。
脚本调用如下:
function showURL(name){
alert(name);
}
答案 0 :(得分:1)
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
${fn:escapeXml(myString)}
答案 1 :(得分:1)
您需要确保${result.url}
返回有效网址。报价在网址中无效。听起来你正在返回一个带有查询字符串的URL,其中包含未编码的参数,如下所示
public String getUrl() {
return "page.jsp?foo=" + foo + "&bar=" + bar;
}
您需要按如下方式更改方法
public String getUrl() {
return "page.jsp?foo=" + URLEncoder.encode(foo, "UTF-8") + "&bar=" + URLEncoder.encode(bar, "UTF-8");
}
您无法使用escape()
等在JavaScript方面修复此问题。已经太晚了。
答案 2 :(得分:0)
为什么不这样做:
onclick=showURL("${result.url}");
function showURL (result_url) {
alert("<c:out value='"+ result_url + "' />");
}
然后你根本不用担心逃避。
-tjw