Struts2类型转换和输入校验的流程

在表单的提交过程中经常碰到应该是数字的类型,但是表单提交的是字母,所以在struts2的自动类型转换中将导致类型转换异常,struts2中也有自定义的处理机制,例如是int的属性age,但是你提交的值是abc,在转换中出现异常,struts2自动调用addFieldError方法,把错误增加进去,但是struts2自动增加的错误提示信息是英文的:Invalid field value for field "age".
但是我们需要自定义这个错误提示信息的话就需要另外的方法了。(首先进行类型转换,再调用set进行属性的设置,然后再执行validate(),最后执行execute(),当类型转换出现异常的时候异常的属性会获得一个初始值int的为0,string的为null,同时validate()方法还是会执行的)
1. 局部属性文件实现
假如对RegisterAction类中的类型转换异常做处理,则在类文件的同一个目录下建立RegisterAction.properties文件,在文件中输入invalid.fieldvalue.age=age convert error误。(invalid.fieldvalue.*前面的两个单词都是固定的*对应action类的属性名。如果希望提示信息为中文,可以通过native2ascii工具把中文转换一下,然后把转换后的信息放这就可以了)。
2. 全局属性文件实现
建立一个全局的属性文件,同时在struts.xml文件中配置一下属性文件的信息。


注:
1. 首先Struts2对客户端传来的数据进行类型转换
2. 类型转换完毕后再进行输入校验,默认情况执行validate方法
3. 如果类型转换和输入校验都没有错误发生,那么进入execute方法(调用商业逻辑)

遇到类型转换错误的时候(也就是说不能进行类型转换),struts2框架自动生成一条错误信息,并且将该错误信息放到addFieldError里面
注意:如果类型转换不成功,也同样要进行输入校验
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值