spring 後臺對象爲空校驗@Valid的用法以及配置。以及@Valid拋出異常問題分析

需要引入

<dependency>

    <groupId>javax.validation</groupId>

    <artifactId>validation-api</artifactId>

    <version>1.1.0.Final</version>

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

第二步在springmvc.xml中加入

<bean id="validator"
      class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
       <property name="providerClass"  value="org.hibernate.validator.HibernateValidator"/>
       <!-- 如果不加默認到 使用classpath下的 ValidationMessages.properties -->
</bean>

按照下列把validator對象進行初始化綁定(如若xml中用到mvc:annotation-driven配置的話。不需要這步操作。mvc:annotation-driven默認進行了如下操作)

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
       <property name="cacheSeconds" value="0"/>
       <property name="messageConverters" ref="messageConverters"/>
       <property name="webBindingInitializer">
              <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
                     <property name="validator" ref="validator" />
              </bean>
       </property>
    
</bean>

第三步如果用需要在具體Controller進行validator對象注入。不然不生效。我這裏是寫了基礎控制器,其他控制器繼承此類就可以

具體用法(如果不讓其拋出異常。而是正常在controller進行錯誤信息返回,需要把@Valid的參數和Errors參數緊鄰在一起,因爲代碼中有一處判斷

所以把要驗證的參數和Errors相鄰,就可以了

 

如果說的不清楚,可以更詳細的問我(或加我qq1512180909)。以上均是實踐操作而來的。不是從網上隨便抄的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章