• Spring MVC 数据校验@Valid


    先看看几个关键词 @Valid @Pattern @NotNull @NotBlank @Size BindingResult 这些就是Spring MVC的数据校验的几个注解。 那怎么用呢?往下看

    1.先在pom.xml文件中加入依赖

    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>4.3.0.Final</version>
    </dependency>

     2.写controller层

    @Controller
    @RequestMapping("/user")
    public class UserController extends BaseController{
        @RequestMapping("/index")
        public String index() {
            return "index";
        }
    
        @RequestMapping("/toAddUser")
        public String toAddUserPage() {
            return "addUser";
        }
    
        /**
         * form表单添加用户,并用注解形式校验
         * @Valid 表示 userModel要进行校验
         * BindingResult 表示绑定校验的错误信息返回
         * @param userModel
         * @param bindingResult
         * @return
         */
        @RequestMapping("/add")
        public String addUser(@Valid @ModelAttribute("userModel") UserModel userModel, BindingResult bindingResult, Model model) {
    
            if (bindingResult.hasErrors()) {
                FieldError fieldError = bindingResult.getFieldError();
                String validMess = fieldError.getDefaultMessage();
                model.addAttribute("errors", validMess);
                return "error";
            }
            System.out.println("用户姓名:" + userModel.getName());
            System.out.println("用户邮箱:" + userModel.getEmail());
            //用重定向防止页面刷新重复提交
            return "redirect: /user/index";
        }
    }

    3、看看UserModel.java

    public class UserModel {
        private Integer id;
    
    //    @NotNull(message = "姓名不能为空")
        @NotBlank(message = "{username.not.empty}")
    //    @Size(min = 3, max = 10, message = "please input right length")
        private String name;
        private Integer age;
        private String gender;
        @Pattern(regexp = "^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$",
                message = "{username.not.empty}")
        private String email;
        @NotNull
        private String phone;
    
        setters... getters....
    }

    4、在spring 的配置文件中添加配置信息 applicationContext.xml

    <!--JSR-303 @Valid 国际化支持配置 -->
    <mvc:annotation-driven validator="validator" conversion-service="conversion-service" />
    <bean id="validator"
          class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass"  value="org.hibernate.validator.HibernateValidator"/>
        <!-- 如果不加默认到 使用classpath下的 ValidationMessages.properties -->
        <property name="validationMessageSource" ref="messageSource"/>
    </bean>
    <bean id="messageSource"
          class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:valid-message-zh" />
        <property name="fileEncodings" value="utf-8"/>
        <property name="cacheSeconds" value="120"/>
    </bean>
    <bean id="conversion-service" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />

    5、别忘记配置文件中的 valid-message-zh.properties哦

    username.not.empty=u7528u6237u540du4e0du80fdu4e3au7a7a

    参考:

    [1] 《Spring实战》,人民邮电出版社, Craig Walls

  • 相关阅读:
    Tensorflow的认识
    机器学习中的重点数学知识
    深度学习TensorFlow常用函数
    18、OpenCV Python 简单实现一个图片生成(类似抖音生成字母人像)
    17、OpenCV Python 数字验证码识别
    django contenttype 表应用
    contentType 应用,(表中数据大量存在外键时使用)
    django 组件拾遗
    rest_framework 的验证,权限,频率
    restframework CBV试图的4种方式
  • 原文地址:https://www.cnblogs.com/happyflyingpig/p/8022881.html
Copyright © 2020-2023  润新知