簡體   English   中英

覆蓋JSP中的errorPage屬性

[英]Overwriting the errorPage property in JSP

我已經在所有JSP文件包含的標頭中定義了<%@ page errorPage="/error.jsp" %> ,以捕獲任何未處理的異常並重定向到該錯誤頁面,而不是打印它們。 需要注意的是,這很好用-如果error.jsp本身拋出異常,它將在無限循環中不斷重定向到自身。 我只想刪除error.jsp的errorPage值,以便它像往常一樣打印異常。 我嘗試只是將errorPage屬性重新定義為空白,但出現以下錯誤:

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

我有什么辦法可以覆蓋該屬性? 或關於如何預防此問題的其他建議?

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

  1. 不要在錯誤頁面中包含標題。
  2. 確保您的錯誤頁面不會自己引發任何異常。 它實際上應該非常簡單明了-錯誤頁面在業務邏輯中不存在。 如果您想在那里做一些復雜的事情,可以考慮重定向到另一個頁面。

您為什么不對錯誤頁面使用另一個頭文件卻本身不包含它呢?

因此,與其具有:

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不會再有錯誤頁面....

最后,我只是通過在頁面周圍用<c:catch>標記來避免該重定向,並打印一條准系統消息(例外情況)以確保它不會中斷,來解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM