7:spring mvc 数据验证

佐手、 提交于 2019-12-04 22:58:53
  1. 注解式数据验证

    Spring3 开始支持JSR-303 验证框架,JSR-303 支持XML 风格的和注解风格的验证,接下来我们首先看一下如何和Spring集成。

    1、添加jar 包:
          此处使用Hibernate-validator 实现(版本:hibernate-validator-4.3.0.Final-dist.zip),将如下jar 包添加到classpath(WEB-INF/lib 下即可):
          validation-api-1.0.0.GA.jar JSR-303 规范API 包
          hibernate-validator-4.3.0.Final.jar Hibernate 参考实现
    2、配置中添加对JSR-303验证框架的支持
    <!--以下validator ConversionService在使用mvc: annotation-driven 会自动注册-->

    <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>  

     


    validationMessageSource属性:指定国际化错误消息从哪里取,此处使用之前定义的messageSource来获取国际化消息;如果此处不指定该属性,则默认到classpath下的ValidationMessages.properties取国际化错误消息。
    通过ConfigurableWebBindingInitializer注册validator:

    <bean id="webBindingInitializer"class="org.springframework. web.bind. support.ConfigurableWebBindingInitializer">
    
        <property name="conversionService" ref="conversionService"/>
    
        <property name="validator" ref="validator"/>
    
    </bean>  

    3、在Spring配置中添加message配置

    <bean id="messageSource“ class="org.springframework. context.support.ReloadableResourceBundleMessageSource">
    
        <property name="basename" value="classpath: messages"/>
    
        <property name="fileEncodings" value="utf-8"/>
    
        <property name="cacheSeconds" value="120"/>
    
    </bean>  

       



    4、创建Model
       

     public class UserModel{
    
         @NotNull(message="{username.not. empty} ")
    
         private String username;
    
     }   


    通过@NotNull指定此username字段不允许为空,当验证失败时将从之前指定的messageSource中获取“username.not. empty” 对应的错误信息,此处只有通过“{错误消息键值} ” 格式指定的才能从messageSource获取。
    5、Controller

    @Controller
    
    public class HelloWorldController{@RequestMapping("/validate/hello")
    
        public String validate(@Valid@ModelAttribute("user")UserModeluser, Errors errors){
    
            if(errors. hasErrors() ) {
    
                return "validate/error";
    
            }
    
            return "redirect: /success";
    
        }  
    
    }


    通过在命令对象上注解@Valid来告诉Spring MVC此命令对象在绑定完毕后需要进行JSR-303验证,如果验证失败会将错误信息添加到errors错误对象中。

  2. 内置的数据验证注解

    验证注解 验证的数据类型 说明
    @AssertFalse Boolean,boolean 验证注解的元素值是false
    @AssertTrue Boolean,boolean 验证注解的元素值是true
    @NotNull 任意类型 验证注解的元素值不是null
    @Null 任意类型 验证注解的元素值是null
    @Min(value=值) BigDecimal,BigInteger, byte,short, int, long,等任何Number 或CharSequence(存储的是数字)子类型 验证注解的元素值大于等于@Min 指定的value 值
    @Max(value=值) 和@Min 要求一样 验证注解的元素值小于等于@Max 指定的value 值
         
         
         
         
         
         
         
         
         
         

     

  3. 错误的消息处理

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!