我正在使用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>
?
答案 0 :(得分:0)
这是网址的大问题。我使用nodejs遇到了同样的问题。最后我使用模块URIjs来构建一个url。您可以找到适合JSP的lib,只需删除最新的斜杠后添加${code}
。另请参阅How to get just the parent directory name of a specific file和http://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
解释为目录。在这种情况下,您的前两次尝试将按预期工作。)