我對如何在Struts2中處理錯誤有點困惑。如果發生錯誤,我希望將一次中央頁面作爲用戶定向的地方。此外,當發生錯誤時,我希望記錄它,因爲我使用的是log4j,所以我將它記錄爲log.error(e.getMessage(), e);
Struts2中的錯誤處理
但是,在我的動作類中,如果我發現錯誤(將所有代碼放入try/catch中)那麼中央/通用錯誤頁面不會出現。所以我決定不要捕捉錯誤,如果我不抓住錯誤,那麼中央錯誤頁面出現。但是現在我怎麼把錯誤消息/ stacktrack放入日誌?
閱讀本link 我做了以下後:
<global-results>
<result name="Exception" type="chain">
<param name="actionName">ErrorPage</param>
<param name="namespace">/error</param>
</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="Exception"/>
</global-exception-mappings>
<action name="selectionPage" class="reports.ReportSelection">
<result>/reports/SelectionPage.jsp</result>
</action>
</package>
<package name="secure" namespace="/error">
<action name="ErrorPage" class="com.myErrorClass">
<result>errorpage.jsp</result>
</action>
</package>
根據上面的配置,原先的錯誤是在reports.ReportSelection拋出(但我沒有抓住它有)所以最後的控制來com.myErrorClass。我可以在這個類中記錄錯誤,但我的問題是,日誌消息是否仍然可用...因爲它最初是在reports.ReportSelection中拋出的?