簡體   English   中英

HV000030:找不到約束'javax.validation.constraints.Size'的驗證器,驗證類型'java.util.Map'

[英]HV000030: No validator could be found for constraint 'javax.validation.constraints.Size' validating type 'java.util.Map'

我正在使用hibernate-validator的bean驗證功能

驗證器邏輯

 public enum ValidatorFactory {
    SINGLE_INSTANCE {

  javax.validation.ValidatorFactory avf =   Validation.buildDefaultValidatorFactory();

  @Override
  public Validator getValidator() {
     return avf.getValidator();
  }

  };

  public abstract Validator getValidator();
}

我在具有如下可選字段的對象上調用validateator.validate(obj)

@UnwrapValidatedValue
@Valid
@Size(min = 1, max = 9)
private Optional<Map<Integer, AreaType>> field;

錯誤javax.validation.UnexpectedTypeException:HV000030:找不到約束類型為java.util.Map的約束'javax.validation.constraints.Size'的驗證器。

根據JPA文檔:

將評估字段或屬性的大小,並且必須匹配指定的邊界。 如果字段或屬性是字符串,則將評估字符串的大小。 如果字段或屬性是Collection,則將評估Collection的大小。 如果字段或屬性是Map,則將評估Map的大小。 如果字段或屬性是數組,則將評估數組的大小。 使用可選的max或min元素之一來指定邊界。

話雖如此,您不能將@Size設置為Optional類型,而只能設置為String,Collections和Arrays。

嘗試刪除Optional類型,如下所示:

@Size(min = 1, max = 9)
private Map<Integer, AreaType> field;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM