![](/img/trans.png)
[英]HV000030: No validator could be found for constraint 'javax.validation.constraints.Size' validating type 'java.util.Optional<java.lang.String>'
[英]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.