当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的异常处理是离不开资源文件的,因为异常的信息只能放在资源文件中。
本文转载于:http://blog.csdn.net/hakunamatata2008/article/details/6213758