2009-10-16 31 views
1

我在頭文件中定義了所有JSP文件包含的<%@ page errorPage="/error.jsp" %>,以捕獲任何未處理的異常並重定向到該錯誤頁面而不是打印它們。如果error.jsp本身拋出一個異常,它會在一個無限循環中不斷地重定向到自己,這可以正常工作。我想刪除error.jsp的errorPage值,以便它將正常打印異常。我嘗試了重新定義的errorPage屬性爲空白,但我得到了以下錯誤:覆蓋JSP中的errorPage屬性

Page指令:非法擁有的errorPage多次出現的值不同(舊:/error.jsp,新:)

是有什麼方法可以覆蓋該屬性?或者有關如何防止此問題的其他建議?

回答

0

我最終只是通過圍繞頁面使用< c:catch>標籤來保護它,以避免首先進行重定向,並打印帶有例外的準系統消息以確保它不會中斷。

1

具有相同屬性的多個page聲明確實是非法的。您的選擇是:

  1. 不包括您的標題到您的錯誤頁面。
  2. 確保您的錯誤頁面不會自行拋出任何異常。它應該真的很簡單直接 - 錯誤頁面不是業務邏輯的地方。如果你想在那裏做一些複雜的事情,可以考慮重定向到另一個頁面。
0

爲什麼你不只是有一個不同的包含頭的錯誤頁面,其中不包括它自己?所以,與其有

header.jsp 
========== 
a 
b 
c 
errorPage=error.jsp 

你可以有:

commonHeader.jsp 
=========== 
a 
b 
c 

沒有errorPage指令

並修改頭部以包括新的。

header.jsp 
=========== 
include=commonHeader.jsp 
errorPage=error.jsp 

這樣,你不需要在其餘任何改變你的JSP的

你只需要你的errorPage從改變:

include="header.jsp" 

include="commonHeader.jsp" 

而errorPage將不再有錯誤頁面。

+0

是的,我不想弄亂include的主要原因是因爲如果有人在不知道我的版本的情況下進行更新,那麼多個版本(或內聯代碼)可能會導致未來的混淆/錯誤。它肯定會工作。 – 2009-10-16 20:26:31

+0

這隻會發生在error.jsp上,剩下的你將會擁有和你一樣的控制權(或混亂),從外部沒有任何變化 – OscarRyz 2009-10-17 00:27:51