Anchor href链接到分层较低的页面

时间:2014-03-04 12:29:42

标签: html jsp anchor

我正在使用JSP创建一些页面,而我在锚点位置时遇到了问题。

当我在页面/somepage/something时,在该页面上,我想链接到页面/somepage/something/code。现在,如果我使用这段代码:

<a href="<c:out value="${code}" />">Link</a>

会产生链接<a href="http://my-server:port/somepage/code">Link</a>

如果我使用此代码:

<a href="./<c:out value="${code}" />">Link</a>

会产生链接<a href="http://my-server:port/somepage/code">Link</a>

如果我使用此代码:

<a href="<c:out value="/${code}" />">Link</a>

会产生链接<a href="http://my-server:port/code">Link</a>

如何建立链接<a href="http://my-server:port/somepage/something/code">Link</a>

3 个答案:

答案 0 :(得分:0)

这是网址的大问题。我使用nodejs遇到了同样的问题。最后我使用模块URIjs来构建一个url。您可以找到适合JSP的lib,只需删除最新的斜杠后添加${code}。另请参阅How to get just the parent directory name of a specific filehttp://arstechnica.com/civis/viewtopic.php?f=20&t=459188

例如:

<%@ page import="java.io.File" %>

<%

  File f = new File(currentUrl);

%>
<a href="<%= f.getParent() + code %>">Link</a>

答案 1 :(得分:0)

根据您使用的Web框架,您可以尝试以下方法之一:

<%
    String var = (String)pageContext.getRequest().getAttribute("javax.servlet.forward.request_uri");
    request.setAttribute("forwardURI", var);
%>
<a href="${forwardURI}/${code}">Link</a>

或只是

<a href="${pageContext.request.requestURI}/${code}">Link</a>

答案 2 :(得分:0)

当浏览器在/somepage/something加载页面(没有斜杠)时,它会将路径解释为“something目录中的文件/somepage”。所以当它看到像

这样的链接时
<a href="code">Link</a>

<a href="./code">Link</a>

它将它们解释为相对于当前目录,即/somepage,这就是他们解析为/somepage/code的原因。

如果您想要/somepage/something/code的(相对)链接,则需要一个类似

的链接
<a href="something/code">Link</a>

(请注意,如果您的页面位于/somepage/something/(带有斜杠),则浏览器会将/somepage/something解释为目录。在这种情况下,您的前两次尝试将按预期工作。)