spring-boot:确保提交的值是一组给定的有效选择之一

时间:2019-06-14 23:52:08

标签: spring-boot validation

在PHP / Symfony框架中,我们可以使用此链接中所述的Choice约束来验证请求值是否是一组值中的一个:

https://symfony.com/doc/current/reference/constraints/Choice.html

例如,我要测试category_id是否为以下之一:[1,2,3,4]。 在spring-boot中有什么方法可以进行这种验证吗?

2 个答案:

答案 0 :(得分:1)

此问题使其更易于使用核心Java实现。使用enum绝对可以更好地解决此问题,但是如果您希望使用验证库,则在这种情况下,休眠验证器会更好。

示例字段声明:

@Range(min = 1, max = 4) int category_id;

https://hibernate.org/validator/

答案 1 :(得分:0)

我找到了解决问题的方法,我必须创建一个带有 @AssertTrue 注释的函数,并检查是否允许从allowedValues数组提交该值 像这样:

int[] allowedValues = {1,2,3,4};
@AssertTrue
public boolean isValidType() {
    return IntStream.of(allowedValues).anyMatch(x -> x == this.typeId);
}