- Struts 2.x权威指南
- 李刚编著
- 295字
- 2025-03-11 03:21:11
4.6.2 处理类型转换错误
下面将以前面最简单的局部类型转换器为例,介绍如何处理类型转换错误。
我们重新改写系统的Action类,让系统的Action类继承Struts 2的ActionSupport类。修改后的Action类代码片段如下。
程序清单:codes\05\5.6\SimpleErrorHandle\WEB-INF\src\org\crazyit\struts2\action\LoginAction.java
// 为了正常使用系统的类型转换错误处理机制,让Action类继承ActionSupport类
public class LoginAction extends ActionSupport
{
// 该类包含一个User类型属性,该属性用于封装名为user的请求参数
private User user;
private String tip;
// 省略该类的其他成分
...
}
前面已经提到,当类型转换出现异常时,conversionError拦截器会处理该异常,然后转入名为 input 的逻辑视图,因此应该为该 Action 增加名为 input 的逻辑视图定义。修改后的struts.xml文件代码如下。
程序清单:codes\04\4.6\SimpleErrorHandle\WEB-INF\src\struts.xml
<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 配置了一个包元素 -->
<package name="lee" extends="struts-default">
<!-- 下面配置本系统的Action -->
<action name="regist" class="org.crazyit.struts2.action.LoginAction">
<!-- 定义类型转换失败后跳转到loginForm.jsp -->
<result name="input">/WEB-INF/content/loginForm.jsp</result>
<result>/WEB-INF/content/welcome.jsp</result>
</action>
<action name="*">
<result>/WEB-INF/content/{1}.jsp</result>
</action>
</package>
</struts>
经过上面的改变,如果用户的输入不能成功转换成用户实例,系统将转入input.jsp页面,等待用户再次输入。