我无法在java网络应用中找到用于验证输入参数的@UUID
(或类似)注释。
到目前为止我已经看了
答案 0 :(得分:19)
是的,自己构建
@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 {};
}
答案 1 :(得分:5)
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}$";
}
答案 2 :(得分:2)
与@Jaiwo99 的回答相同,但正如@mrzli 指出的那样,模式的消息会覆盖任何自定义消息。如果您需要自定义消息,则在 @Pattern 中使用消息将解决该问题。
@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}$", message = "Not a valid UUID")
public @interface UUID {
String message() default "{invalid.uuid}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}