温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

springmvc中@Validated注解怎么用

发布时间:2021-09-23 14:26:43 来源:亿速云 阅读:147 作者:小新 栏目:编程语言

小编给大家分享一下springmvc中@Validated注解怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

1. 校验的错误信息, 可以直接在bean属性上配置, 也可以在properties中配置。

2. 将校验器bean配置到注解驱动上

3. 在需要校验的pojo前边添加@Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息

注意:@Validated和BindingResult bindingResult是配对出现,并且形参顺序是固定的(一前一后)。

使用validated所需配置:

1. jar包

2. application.xml

<!-- 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="org.springframework.context.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 * @param bindingResult * @return */@RequestMapping("valid")@ResponseBodypublic 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 = bindingResult.getAllErrors();for (ObjectError err : errors) {sb.append(err.getDefaultMessage()+"; ");}result.setErrInfo(sb.toString());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")@ResponseBodypublic 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 = bindingResult.getAllErrors();for (ObjectError err : errors) {sb.append(err.getDefaultMessage()+"; ");}result.setErrInfo(sb.toString());result.setErrNo(1); return result;}retMap.put("bean", bean);result.success();result.setData(retMap);return result;}}

以上是“springmvc中@Validated注解怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI