关于Spring中的Errors

1. Errors对象的作用

当使用当使用Hibernate Validation验证框架验证某字段出错时,spring会将错误消息方法紧跟在方法入参处的Bean后面的Errors对象中。

也就是说,在Springmvc对前台传过来的请求参数进行数据绑定时,若绑定失败、或是校验不通过时,会将对应的错误消息放进Errors对象中。

2. 错误消息的在Errors对象中具体存放形式

Errors对象中利用ObjectError的List保存所有的错误消息,同时也会将字段验证出错的消息放到FieldError的List中。也就是说如果是方法入参处Bean的某个字段验证出错,会将错误消息同时保存到 Errors 的 List<FieldError>List<ObjectError>

3. 错误消息的code值

当方法入参处Bean的某个字段验证出错,会为上述两个List中FieldError对象和ObjectError对象中的codes属性设置多个code值,其格式如下:
- 第一个code值:注解名.Bean的简单类名首字母小写.被验证的属性名,如Pattern.view.viewName
- 第二个code值:注解名.被验证的属性名,如Pattern.viewName
- 第三个code值:注解名.被验证的属性对应的类型的全类名,如Pattern.java.lang.String
- 第四个code值:注解名,如Pattern

FieldError和ObjectError对象调用getCodes()方法返回值就是如上形式,一般前端使用 <form:errors path="viewName"/> 进行错误消息回显时,会根据注解名.Bean的简单类名首字母小写.被验证的属性名这个规范从国际化资源文件中,取该code对应的错误消息去前台页面显示。

4. 手动向Errors对象中添加一条错误消息

可以调用Errors对象的rejectValue()方法向Errors对象添加字段错误消息,如

errors.rejectValue("birth", "Past");
  • 第一个参数是字段名
  • 第二个参数是code值,code值一般只需要给对错误的描述的一个单词或者多个单词(多个单词以驼峰形式连接)即可,框架在生成code值得时候会自动拼接上字段名。上述写法生成的code值在codes数组中的第一个是这样的:Past.user.birth而像下面这种虽然也可以,但生成的code值会很乱很冗余,因为他还会拼接一次字段名,下面不规范的写法生成的code值类似于这样:Past.user.birth.user.birth
errors.rejectValue("user.birth", "Past.user.birth");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值