json 添加带有不同错误消息的@NotBlank和Pattern约束

vwkv1x7d  于 2022-11-26  发布在  其他
关注(0)|答案(1)|浏览(241)
@NotBlank(message = "userCategory is missing")
@Pattern(regexp = "Single|Married", message = "userCategory is invalid")
private String userCategory;

目前,当验证发生时,当我为userCategory提供一个空格/空白值时,它会给我两个错误消息。

"errors": [
        {
            "message": "userCategory is missing"
        },

         {
            "message": "userCategory is invalid"
        }

    ]

我想抛出一个缺失值,如果它是空白/空白,并且不希望在空值或空白的情况下出现无效错误。我想说userCategory是无效的,只有当输入了一些无效的东西,如abddd而不是Single或Married时,除了空白/空白值之外的东西具有无效值。
当userCategory为空或键入空格时,我期待出现类似下面的错误消息。

"errors": [
        {
            "message": "userCategory is missing"
        }]
lztngnrs

lztngnrs1#

@Pattern将忽略null值,但对于空值,我认为最简单的选择是在模式中接受空值。
另一个选择是使用一个组合约束,在这里您禁用默认消息并添加您自己的消息(注意@ReportAsSingleViolation注解)。

@NotBlank
@Pattern(regexp = "Single|Married")
@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = {})
@ReportAsSingleViolation
public @interface ValidUsername {

    String message() default "userCategory is invalid";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}

最后一个选项是实现您自己的验证器,在这种情况下,您对验证过程和验证消息有充分的灵活性。
来自Hibernate团队的Marko在Hibernate博客上写了一篇非常完整的博文:https://in.relation.to/2017/03/02/adding-custom-constraint-definitions-via-the-java-service-loader/

相关问题