2014-03-04 119 views
1

我正在使用JSP創建一些頁面,並且遇到了錨點位置的問題。鏈接到層次結構較低的頁面的鏈接href

當我在頁面/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

當瀏覽器加載頁面時/somepage/something(沒有結尾斜槓),它將路徑解釋爲「目錄/somepage中的文件something」。所以當它看到像

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

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

它會將它們解釋爲是相對於當前目錄,即/somepage,這就是爲什麼他們決心/somepage/code鏈接。

如果你想有一個(相對)鏈接/somepage/something/code,你會需要像

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

(請注意,如果你的網頁是在​​(以斜槓),然後在瀏覽器解釋/somepage/something爲紐帶在這種情況下,你的前兩次嘗試將按預期工作。)

+0

我不能相信我忘了添加尾部斜線。 – j0ntech

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> 
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>