由于用户输入的数据错误,而导致进行类型转换发生异常的情况时有发生.此时需进行类型转换的错误处理!
类型转换的错误处理方法:
(1)引用defaultStack拦截器栈 ----包如果继承自struts-default,则已经引用了
(2)Action类继承ActionSupport类或者实现ValidationAware接口
(3)为Action配置result name="input"的映射
默认错误信息显示为:
Invalid field value forfield "xxxx" (xxxx为实际字段名称)
如果不希望使用默认错误信息则有两种方法:
1. 全局资源文件中配置
xwork.default.invalid.fieldvalue=<your error message>
效果:所有类型转换错误,均显示为=<your error message>
2. 局部资源文件配置
在当前Action包下创建文件名为:ActionName.properties
文件内逐个字段定义错误信息,格式如下:
invalid.fieldvalue.xxxx= <error message> (其中xxxx为字段名)
=============================================================================
特别说明:
1.控制台信息
尽管类型转换进行了错误处理,可是在控制台仍然会显示错误信息.方法修改Log4j.properties文件相关错误信息输出级别
参考设置:
1.# Set root logger level to WARN and append to stdout
2.log4j.rootLogger=WARN, stdout
3.
4.log4j.appender.stdout=org.apache.log4j.ConsoleAppender
5.log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
6.
7.# Pattern to output the caller's file name and line number.
8.log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c/:%L) - %m%n
9.
10.# Print only messages of level ERROR or above in the package noModule.
11.log4j.logger.noModule=FATAL
12.
13.# OpenSymphony Stuff
14.log4j.logger.com.opensymphony=INFO
15.log4j.logger.org.apache.struts2=DEBUG
16.
17.log4j.logger.com.opensymphony.xwork2=ERROR
2.如果Action类型为int,double等基本类型,则null,""这样的错误信息无法捕获
把Action属性设置成为对应的封装类类型,例如int-->Integer