2012-08-25 44 views
2

我有我想重定向當用戶來到翻過Error404例如一個頁面的error.html。下面的工作:的web.xml錯誤頁面不顯示圖像

<error-page> 
    <error-code>404</error-code> 
    <location>/error404.jsp</location> 
</error-page> 

但是,我error404.jsp文件包含其中,當用戶被重定向不會被顯示的圖像。如果我只輸入網址,則會顯示帶圖片的整頁。但是,如果用戶嘗試執行報告錯誤404的內容,則會顯示error404.jsp文件而不顯示圖像。

我也嘗試與具有error404.html,但我得到了同樣的問題...

你有爲什麼發生這種情況的任何想法?

非常感謝 埃納

回答

3

當錯誤頁面呈現,其內容未經重定向HTTP響應返回。這意味着瀏覽器仍然會在發生錯誤的請求的URL的上下文中「看到」它。因此,任何相關資源鏈接(圖片,CSS等)都將相對於當前頁面的URL。

所以,如果你有以下設置:

  • 在圖像image1.gif文件夾
  • error404.jsp引用圖像"../images/image1.gif"

你會發現,打字http://yourserver.com/YourContextRoot/error404.jsp工作正常,但是當你使用http://yourserver.com/YourContextRoot/path1/path2/missingPage它嘗試查找錯誤路徑中的圖像(即在/YourContextRoot/path1/images/image1.gif下)。

的解決方案是使用JSP EL或scriptlet而創建一個相對於服務器的鏈路(即,具有「/」開頭),由包括上下文根:

<img src="${pageContext.request.contextPath}/images/image1.gif" /> 

希望的作品!