我有以下代码
<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而不破坏功能。通常我会使用双引号,如果它不是动态的 - 似乎没有任何东西
答案 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>