gpt4 book ai didi

java - Dropwizard 自定义验证注释不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:15 25 4
gpt4 key购买 nike

我尝试使用自定义验证注释一次应用多个常见注释,如下所示:

@Retention(RetentionPolicy.RUNTIME)
@Length(max=25, min=1, message="invalid length")
@NotNull
@Pattern(regexp = "[a-zA-Z0-9]{1, 25})")
public @interface MyAnnotation {
}

并在我的模型类中使用它,如下所示:

@MyAnnotation
public String firstName;

这些验证都不起作用,但在模型类本身中使用时它们会按预期工作。我还尝试在应用程序运行方法中注册 MyAnnotation,但这也不起作用。

environment.jersey().register(MyAnnotation.class);

为了使用自定义验证,我还需要做什么?

最佳答案

直接注释字符串:

@Pattern(regexp = "[a-zA-Z0-9]{1, 25})")
@NotNull
@Length(max=25, min=1, message="invalid length")
public String firstName;

或者创建一个 validator ,例如:

class MyAnnotatationValidator implements ConstraintValidator<MyAnnotation, String>{
@Override
public void initialize(MyAnnotation a){}
@Override
public boolean isValid(String s, ConstraintValidationContext c) {
return s != null && (s.length() > 0 && s.length() < 26) && s.matches("[a-zA-Z0-9]{1, 25})";
}
}

并且有

@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy=MyAnnotatationValidator.class)
public @interface MyAnnotation {
String message() default = "{MyAnnotation}";
Class<?>[] groups() default {};
Class<? extends Payload> payload() deafult {};
}

关于java - Dropwizard 自定义验证注释不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38153880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com