驗證
預設情況下,如果類路徑上存在 Bean Validation(例如 Hibernate Validator),則 LocalValidatorFactoryBean 將註冊為全域性 Validator,用於控制器方法引數上的 @Valid 和 @Validated。
您可以自定義全域性 Validator 例項,如下例所示:
-
Java
-
Kotlin
-
Xml
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
@Override
public Validator getValidator() {
Validator validator = new OptionalValidatorFactoryBean();
// ...
return validator;
}
}
@Configuration
class WebConfiguration : WebMvcConfigurer {
override fun getValidator(): Validator {
val validator = OptionalValidatorFactoryBean()
// ...
return validator
}
}
<mvc:annotation-driven validator="globalValidator"/>
請注意,您也可以在本地註冊 Validator 實現,如下例所示:
-
Java
-
Kotlin
@Controller
public class MyController {
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.addValidators(new FooValidator());
}
}
@Controller
class MyController {
@InitBinder
fun initBinder(binder: WebDataBinder) {
binder.addValidators(FooValidator())
}
}
如果需要注入 LocalValidatorFactoryBean,請建立一個 Bean 並用 @Primary 標記它,以避免與 MVC 配置中宣告的 Bean 發生衝突。 |