Spring Bean验证提供ConstraintDeclarationException

时间:2018-12-24 17:16:07

标签: java spring spring-boot spring-webflux hibernate-validator

我正在获取javax.validation.ConstraintDeclarationException:HV000197:未找到类型为react.core.publisher.Mono的类型参数'T'的值提取器。 我在课堂上添加@Validated后得到了这个。如果我删除此代码,则不会触发验证逻辑。

  @RestController
  @Validated
  public class ContactInfoController implements ContactInfoApi {
  public Flux<UserContactsModel> getUserContacts(@RequestBody  Mono<@Valid  LoginModel> loginDetail) {

1 个答案:

答案 0 :(得分:0)

您收到的错误消息实际上是预期的行为,因为HV中没有注册ValueExtractor。当应从某个容器中提取值时,Bean验证需要使用这些值提取器。 有关ValueExtractors的更多详细信息,请参见此documentation

在您的特定情况下,Mono被视为容器。但是MonoSubscriber)的概念与容器不同。而且我看不到如何将这两个概念结合在一起。为了能够“验证”单声道,您实际上需要将其subscribe方法包装到一些验证代理中,并在将值推入单声道本身时执行验证。