springmvc的@Validated注解使⽤
1. 校验的错误信息,可以直接在bean属性上配置,也可以在properties中配置。
2. 将校验器bean配置到注解驱动上
3. 在需要校验的pojo前边添加@Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息注意:@Validated和BindingResult bindingResult是配对出现,并且形参顺序是固定的(⼀前⼀后)。
使⽤validated所需配置:
1. jar包
2. l
<!-- validated 校验配置start -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" >
<!-- 提供检验机制的类:此处⽤的⽽是Hibernate校验器,但是跟Hibernate没有关系 -->
<property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
<!-- 指定校验的使⽤的资源⽂件, 如果不需要额外的错误配置⽂件,就不⽤配置该属性,
在配置⽂件中配置k-v的错误提⽰信息,如果不指定则使⽤默认配置:classpath下的ValidationMessages.properties -->
<property name="validationMessageSource" ref="messoreSources" />
</bean>
<!-- 额外错误信息⽂件配置 -->
<bean id="messoreSources" class="t.support.ReloadableResourceBundleMessageSource">
<!--    错误信息资源⽂件,不需要写后缀,默认后缀为.properties -->
<property name="basenames">
<list>
<value>classpath:testErrMessages</value>
</list>
</property>
<!--    错误信息⽂件编码⽅式 -->
<property name="fileEncodings" value="utf-8" />
<!--    错误信息⽂件缓存时间 -->
<property name="cacheSeconds" value="120" />
</bean>
<!-- validated 校验配置end -->
<!-- 注解驱动,替换处理器映射器、处理器适配器 -->
<mvc:annotation-driven validator="validator" />
3. testErrMessage.properties⽂件
⽂件结构:
⽂件内容:
4. bean的配置,省略get/set⽅法
public class ValidBean {
//直接配置错误信息
@NotBlank(message="⽤户名不能为空", groups= {UserGroup1.class})
private String name;
@Max(value=120, message="年龄最⼤为120")
private Integer age;
// 使⽤配置⽂件中的错误信息, properties中的key: message="{key}"。 {}:占位符
@NotBlank(message="{validator.user.address}")
private String address;
}
5. controller
@Controller
@RequestMapping("/test/")
public class ValidTestController {
/**
*
* @desc: 校验没有分组的属性
* @auth: zona
* 2017年2⽉19⽇下午2:35:42
* @param bean
springmvc的注解有哪些
* @param bindingResult
* @return
*/
@RequestMapping("valid")
@ResponseBody
public Result testValid(@Validated ValidBean bean, BindingResult bindingResult) {
Result result = new Result();
Map retMap = new HashMap();
StringBuilder sb = new StringBuilder();
if(bindingResult.hasErrors()) {
List<ObjectError> errors = AllErrors();
for (ObjectError err : errors) {
sb.DefaultMessage()+"; ");
}
result.String());
result.setErrNo(1);
return result;
}
retMap.put("bean", bean);
result.success();
result.setData(retMap);
return result;
}
/**
*
* @desc: 仅对属于userGroup组的属性进⾏校验
* @auth: zona
* 2017年2⽉19⽇下午2:37:03
* @param bean
* @param bindingResult
* @return
*/
@RequestMapping("group/valid")
@ResponseBody
public Result testGroupValid(@Validated(value=UserGroup1.class) ValidBean bean, BindingResult bindingResult) {  Result result = new Result();
Map retMap = new HashMap();
StringBuilder sb = new StringBuilder();
if(bindingResult.hasErrors()) {
List<ObjectError> errors = AllErrors();
for (ObjectError err : errors) {
sb.DefaultMessage()+"; ");
}
result.String());
result.setErrNo(1);
return result;
}
retMap.put("bean", bean);
result.success();
result.setData(retMap);
return result;
}
}
测试结果:
只校验没有分组的属性
校验UserGroup1组的属性
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。