zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    多线程伪共享FalseSharing
    C语言restrict限定符
    Linux线程基础函数
    Linux信号函数
    C函数前向声明省略参数
    12.2 关闭DLM 自动收集统计信息 (SCM0)ORA-00600之[ksliwat: bad wait time]
    pdb的数量限制
    关闭或开启memory_target
    OSWATCH安装
    参数SID写错,ERROR OGG-00664 ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist
  • 原文地址:https://www.cnblogs.com/happyflyingpig/p/8022881.html
Copyright © 2011-2022 走看看