如何正确包含可能包含特殊字符的href

时间:2016-01-06 21:54:58

标签: html jstl jspx

我有以下代码

<a href=<c:url value="/admin/main" ><c:param name="key" value="${sessionScope.myvalue}"/></c:url>>Example Link</a>

这可以不使用href&#34;或者href =&#34;或者href =&#39;并没有任何围绕href - 主要是因为它只是参数。由于myvalue可以包含&#39;或&#34;添加单引号或双引号会打破它,添加&amp; quot会中断链接,因为本地附加到href之前的url的开头,因为应用程序中的所有链接都是相对的。这是处理这些链接的最佳方式吗?或者有没有更好的方法来封闭整个href而不破坏功能。通常我会使用双引号,如果它不是动态的 - 似乎没有任何东西

1 个答案:

答案 0 :(得分:1)

您必须对href属性中的值进行html编码。根据您现有的<c:url>代码,看起来您使用的是JSTL (Java Standard Tag Library),因此您可以使用内置的escapeXml()功能。

在jsp页面的顶部包含以下内容:

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

然后你可以这样调用这个函数:

<c:url var="myUrl" value="/admin/main">
    <c:param name="key" value="${sessionScope.myvalue}"/>
</c:url>

<a href="${fn:escapeXml(myUrl)}">Example Link</a>