struts1.3異常處理機制
當Struts的控制器捕獲到異常時,在異常處理塊中,創建描述異常信息的ActionMessage對象,並放入ActionMessages對象中.然後把ActionMessages對象存放到一定範圍內(request或者session範圍),接下來,視圖層的<html:errors/>標籤檢查特定範圍內的ActionMessages對象,把本地化的錯誤信息顯示到頁面上.
1. struts 的異常處理
Action :
ActionErrors msg = new ActionErrors();
msg.add("login_error", new ActionMessage("app.error.login",true));
addErrors(request, msg);
ActionErrors是保存錯誤信息的集合
ActionMessage是一條錯誤提示信息
new ActionMessage("app.error.login"))和MessageResources綁定
new ActionMessage("登錄錯誤"),false)不和MessageResources綁定
new ActionMessage("error2","value0","value1"));第一個參數指和MessageResources綁定
的key值,後面的參數是綁定的MessageResources裏的value值 {0},{1}
addErrors() 方法將所有的報錯信息放入到request裏去
jsp:
<html:errors property="login_error" />
property 的值對應的是添加錯誤信息的時候指定的key,
如果沒有 property 屬性,就把所有的報錯信息顯示處理
總結:
struts1.3異常處理機制
當Struts的控制器捕獲到異常時,在異常處理塊中,創建描述異常信息的ActionMessage對象,
並放入ActionMessages對象中.然後把ActionMessages對象存放到一定範圍內
(request或者session範圍),接下來,視圖層的<html:errors/>標籤檢查特定範圍
內的ActionMessages對象,把本地化的錯誤信息顯示到頁面上.
來點理論的:
Strut1.x的異常處理蠻簡單。配置時分爲全局,異常與局部異常。
對於一個action若發生異常則先查找本身action是否有相應異常的配置,若無則查找全局異常配置,還沒有則報錯。異常處理一定會用到資源文件
- 局部配置如下
<!--
key指定信息在資源文件中的鍵值
type指發生的異常類型。
bundle使用哪個資源文件,不配置則使用默認的資源文件
-->
<exception key="user.register" type="edu.yzu.exception.UserRegisterException" bundle="exception" path="/error.jsp"/>
- 全局配置如下,各屬性與局部配置一樣
<global-exceptions>
<exception key="user.register" type="edu.yzu.exception.UserRegisterException" bundle="exception" path="/error.jsp"/>
</global-exceptions>
3.對於一個異常,通過會轉入另外一個頁面,提示錯誤,struts1.x在此設計有些不合理,一旦轉入異常提示頁面時,即使這個頁面設置了isErrorPage="true"但是它的內置有exception對象依然爲空,所以不能用exception得到異常中的信息,只能用<html:errors />來得到,一大失誤哦,這也就是說struts1.x的異常處理是離不開資源文件的,因爲異常的信息只能放在資源文件中。