zoukankan      html  css  js  c++  java
  • springmvc的@Validated注解使用

    https://blog.csdn.net/changerzhuo_319/article/details/55804651

    . 校验的错误信息, 可以直接在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")
    @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 = 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")
    @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 = 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;
    }
    }

    测试结果:
    只校验没有分组的属性

    校验UserGroup1组的属性

    点赞 2
    收藏
    分享

    ————————————————
    版权声明:本文为CSDN博主「changerzhuo」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/changerzhuo_319/java/article/details/55804651

  • 相关阅读:
    Spark SQL CLI 实现分析
    Sencha Touch+PhoneGap打造超级奶爸之喂养记(一) 源码免费提供(转)
    WCF 采用net.tcp协议实践(转)
    WPF如何用TreeView制作好友列表、播放列表(转)
    WPF 带CheckBox、图标的TreeView(转)
    重磅来袭,开源Asp.Net MVC网上商城BrnShop正式发布,提供源码下载(转)
    WPF中使用BitmapImage处理图片文件(转)
    动画Completed事件里获取执行该动画的UI对象
    WPF中Image显示本地图片(转)
    wpf的datepicker处理(转)
  • 原文地址:https://www.cnblogs.com/zhoading/p/12624003.html
Copyright © 2011-2022 走看看