是否有与@NotEmpty
等效的装饰器,但在Optional
上可用的装饰器?基本上我有一个财产
Optional<String> voice;
我不希望它成为空字符串; !voice.isPresent()
或(如果是)不是一个空字符串。希望Dropwizard将自动使用装饰器,并为该请求返回400。
答案 0 :(得分:0)
如果您想使用@NotEmpty
,那么为什么要使用Optional
。您可以为此添加验证方法。
在您的请求类中添加此验证方法:
@AssertTrue
public boolean isValid(){
return StringUtils.isNotBlank(voice.orElse(null));
}
答案 1 :(得分:0)
JSR-380
规范(Bean验证2.0)认为空的可选内容为null
。
因此;如果您使用检查为空的约束(例如@NotBlank
或@NotEmpty
),则应该获得所需的行为:
Optional<@NotBlank String> voice;
或
Optional<@NotEmpty String> voice;
如果您要检查修剪后的字符串,建议使用@NotBlank
。 " "
(空白)将通过@NotEmpty
,但不会通过@NotBlank
。
如果您使用不检查null的约束(大多数约束),则只需添加@NotNull
约束即可解决问题。我还没有测试过。
Optional<@NotNull @Size(min = 1, max = 1000) String> voice;