@NotBlank(message = "userCategory is missing")
@Pattern(regexp = "Single|Married", message = "userCategory is invalid")
private String userCategory;
当验证发生时,当我为userCategory提供一个whitespaces/blank值时,它会给我两个错误消息。
"errors": [
{
"message": "userCategory is missing"
},
{
"message": "userCategory is invalid"
}
]
我想抛出一个缺失的值,如果它是空白/空白,不希望在空值或空白的情况下无效的错误。我想说userCategory是无效的,只有当有一些键入无效的东西,如abddd而不是单身或已婚,除了空白/空值与无效值。
当userCategory为空或键入空格时,我预计会出现如下错误消息。
"errors": [
{
"message": "userCategory is missing"
}]
@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/.