驗證

預設情況下,如果類路徑上存在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 衝突。