当使用ConstraintValidator
s时,我们只需要定义class和constraint,Spring就能够检测验证器并自动示例化它们,在构造函数中注入我们要求的任何bean。
如何以相同的方式添加自定义Spring Validator
s(https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/validation/Validator.html)?
当使用ConstraintValidator
s时,我们只需要定义class和constraint,Spring就能够检测验证器并自动示例化它们,在构造函数中注入我们要求的任何bean。
如何以相同的方式添加自定义Spring Validator
s(https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/validation/Validator.html)?
2条答案
按热度按时间enxuqcxy1#
例如,在控制器中,您需要创建一个具有RequestBody和@valid注解的API
然后创建一个类,实现Spring Validator提供的Validator接口。你必须实现2个方法-> support和validate,在support方法中你必须设置你需要验证的类:这意味着在运行你的API方法之前,spring会看到有效的annotation并检查他们的Validator接口的实现,如果support class和你的requestBody class是相同的,那么在自定义验证器中运行validate方法。支持方法示例:
在你的validate方法中,你有两个输入-> object和error。首先将你的对象转换为Bar对象,然后开始验证Bar类,如果有错误,使用error.reject并用消息填充错误对象。如果error!=null,那么spring将向客户端返回400(错误请求)和您的自定义消息。
mpgws1up2#
您必须让控制器知道哪个验证器将验证您的请求。我使用以下代码来查找支持的验证器:
请注意,您必须将这些验证器创建为bean。因此,您应该使用@Component注解这些验证器。希望这对你有帮助。