2013-08-04 59 views
0

在參考我較老的未回答的問題時,我有一個與它部分相關的錯誤/問題。pageContext.request.contextPath和通用鏈接

generic linking, variables and paths in jsp

enter image description here

當我包括我的header.jsp這樣的:

<%@include file="/WEB-INF/view/jsp/common/header.jsp" %> 

它工作正常。

,但不會,如果我不喜歡這樣寫道:

<%@include file="${pageContext.request.contextPath}/view/jsp/common/header.jsp" %> 

錯誤:

HTTP Status 500 - /WEB-INF/view/jsp/common/login/login.jsp (line: 8, column: 1) File "${pageContext.request.contextPath}/view/jsp/common/header.jsp" not found 

上面用$ {}是一個適當的方式和這就是我在過去一直在做直到我開始使用彈簧和彈簧安全。

但我不認爲它是春季或春季安全的問題。

我真的不能明白爲什麼WEB-INF有一個權重和 我怎樣才能讓我的鏈接通用(參考我的老規定的問題)

回答

3

其實,這不是在這種情況下,正確的方法。在這種情況下,上下文路徑不會用於在應用程序的內部創建路徑。相反,它被用來生成視圖層內的網址,如鏈接,表單URL和等

在這種情況下,下面是正確的:

<%@include file="/WEB-INF/view/jsp/common/header.jsp" %> 

的包括線以上所指的是一個資源打包在你的war文件內。在servlet容器中配置的上下文路徑如何與打包在你的戰爭中的東西的位置有什麼關係?

回顧一下,您只需要使用${pageContext.request.contextPath}即可將要輸出到客戶端的URL前綴。

+0

我怎麼可以在它的通用鏈接,變量等呢? –

+1

@MoodoodAhmad我增加了一些細節。我不知道如何解釋給你。他們是兩種不同的情況,你不用它來包含。您指出的那些代碼是我的答案中的正確方法。 –

+0

要接受您的答案,謝謝!並告訴你是否有更好的策略來重構/改變將來的目錄位置。 –