gpt4 book ai didi

java - 必须只接受特定数值的 validator

转载 作者:行者123 更新时间:2023-12-03 19:05:14 25 4
gpt4 key购买 nike

除了 javax.validation,我还在使用 Hibernate Validator用于验证 Spring MVC 应用程序中 Controller 的请求主体的库。约束的注释有助于最小和最大边界以及位数,但我找不到只接受特定数字的方法。例如,如果我只想接受值 10、20 和 50,该怎么办?

我知道可以使用 org.springframework.validation.Validator界面以创建更复杂的规则。想到的另一件事是创建一个具有所需数值的枚举,但这似乎不是一个干净的解决方案。我很想知道是否有更好、更简单的方法来实现我想要的。

最佳答案

您可以创建自己的接受多个值的注释。这涉及编写一个 Annotation 类和一个 Validator 类:

public class OneOfValidator implements ConstraintValidator<OneOf, Integer> {}

和注释:
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = OneOfValidator.class)
public @interface OneOf {
String message() default "value must match one of the values in the list";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
int[] value() default {};
}

然后你可以像这样使用它:
@OneOf({2, 3, 5, 9})

关于java - 必须只接受特定数值的 validator ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42361846/

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