适用于NotEmpty的Java Decorator(可选)

时间:2018-08-09 18:01:23

标签: java jackson dropwizard

是否有与@NotEmpty等效的装饰器,但在Optional上可用的装饰器?基本上我有一个财产

Optional<String> voice;

我不希望它成为空字符串; !voice.isPresent()或(如果是)不是一个空字符串。希望Dropwizard将自动使用装饰器,并为该请求返回400。

2 个答案:

答案 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;