如何正确包含可能包含特殊字符的 href
how to properly enclose an href that may contain special characters
我有以下代码片段
<a href=<c:url value="/admin/main" ><c:param name="key" value="${sessionScope.myvalue}"/></c:url>>Example Link</a>
这可以在不使用 href" 或 href=" 或 href=' 并且 href 周围没有任何东西的情况下工作 - 主要是因为它只是参数。由于 myvalue 可以包含 ' 或 " 添加单引号或双引号会破坏它,因此添加 " 会破坏 link 因为本地附加到 href 之前的 url 的开头,因为所有 links in应用程序是相对的。这是处理这些 links 的最佳方法吗?或者是否有更好的方法来包含完整的 href 而不会破坏功能。如果它不是动态的,我通常会使用双引号 - 看起来那里什么都没有是错误的
您必须 html 对 href
属性中的值进行编码。根据您现有的 <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>
我有以下代码片段
<a href=<c:url value="/admin/main" ><c:param name="key" value="${sessionScope.myvalue}"/></c:url>>Example Link</a>
这可以在不使用 href" 或 href=" 或 href=' 并且 href 周围没有任何东西的情况下工作 - 主要是因为它只是参数。由于 myvalue 可以包含 ' 或 " 添加单引号或双引号会破坏它,因此添加 " 会破坏 link 因为本地附加到 href 之前的 url 的开头,因为所有 links in应用程序是相对的。这是处理这些 links 的最佳方法吗?或者是否有更好的方法来包含完整的 href 而不会破坏功能。如果它不是动态的,我通常会使用双引号 - 看起来那里什么都没有是错误的
您必须 html 对 href
属性中的值进行编码。根据您现有的 <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>