是否有 uuid 验证器注释?
2022-09-01 18:19:26
我找不到(或类似的)注释来验证java Web应用程序中的输入参数。@UUID
到目前为止,我已经看过了
- javax.validation.constraints
- org.hibernate.validator.constraints
我找不到(或类似的)注释来验证java Web应用程序中的输入参数。@UUID
到目前为止,我已经看过了
是的,自己建造
@Target(ElementType.FIELD)
@Constraint(validatedBy={})
@Retention(RUNTIME)
@Pattern(regexp="^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$")
public @interface UUID {
String message() default "{invalid.uuid}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
[已更新]
@Jaiwo99的解决方案将不显示指定的消息,而是显示来自 的错误消息。要解决此问题,只需向@Jaiwo的解决方案添加注释即可。(@LudovicRonsin在对这个答案的评论中指出了这一点,并在评论中@helospark@Jaiwo99的答案。@Pattern
@ReportAsSingleViolation
@Target(ElementType.FIELD)
@Constraint(validatedBy={})
@Retention(RUNTIME)
@Pattern(regexp="^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$")
@ReportAsSingleViolation
public @interface UUID {
String message() default "{invalid.uuid}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
[旧答案]
来自Jaiwo99的解决方案有效,但我无法从外部设置自定义消息(它被来自 的消息覆盖)。如果你需要它,我建议你简单地使用这样的东西:@Pattern
@Pattern(regexp = SomeUtilClass.UUID_PATTERN, message = "TokenFormatError")
private String token;
您可以将模式放在一些静态的最终字段中以避免重复:
public static SomeUtilClass {
public static final String UUID_PATTERN = "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$";
}