W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Spring提供了一個驗證器Validator接口,應用的任何一層都可以使用它來做驗證。在Spring MVC中,你可以配置一個全局的Validator
實例,用以處理所有注解了@Valid
的元素或注解了@Validated
的控制器方法參數(shù)、以及/或在控制器內的@InitBinder
方法中用作局部的Validator
。全局驗證器與局部驗證器實例可以結合起來使用,提供組合驗證。
Spring還支持JSR-303/JSR-349的Bean驗證。這是通過LocalValidatorFactoryBean
類實現(xiàn)的,它為Spring的驗證器接口org.springframework.validation.Validator
到Bean驗證的javax.validation.Validator
接口做了適配。這個類可以插入到Spring MVC的上下文中,作為一個全局的驗證器,如下所述。
如果在classpath下存在Bean驗證器,諸如Hibernate Validator等,那么@EnableWebMvc
或<mvc:annotation-driven>
默認會自動使用LocalValidatorFactoryBean
為Spring MVC應用提供Bean驗證的支持。
有時,能將
LocalValidatorFactoryBean
直接注入到控制器或另外一個類中會更方便。Sometimes it's convenient to have a
LocalValidatorFactoryBean
injected into a controller or another class. The easiest way to do that is to declare your own@Bean
and also mark it with@Primary
in order to avoid a conflict with the one provided with the MVC Java config.If you prefer to use the one from the MVC Java config, you'll need to override the
mvcValidator
method fromWebMvcConfigurationSupport
and declare the method to explicitly returnLocalValidatorFactory
rather thanValidator
. See Section 21.16.13, "Advanced Customizations with MVC Java Config" for information on how to switch to extend the provided configuration.
此外,你也可以配置你自己的全局Validator
驗證器實例:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public Validator getValidator(); {
// return "global" validator
}
}
XML中做法如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:annotation-driven validator="globalValidator"/>
</beans>
若要同時使用全局驗證和局部驗證,只需添加一個(或多個)局部驗證器即可:
@Controller
public class MyController {
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.addValidators(new FooValidator());
}
}
做完這個最少的配置之后,任何時候只要方法中有參數(shù)注解了@Valid
或@Validated
,配置的驗證器就會自動對它們做驗證。任何無法通過的驗證都會被自動報告為錯誤并添加到BindingResult
對象中去,你可以在方法參數(shù)中聲明它并獲取這些錯誤,同時這些錯誤也能在Spring MVC的HTML視圖中被渲染。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: