gpt4 book ai didi

jakarta-ee - 枚举字段的 JSR-303 Bean 验证

转载 作者:行者123 更新时间:2023-12-04 01:52:16 25 4
gpt4 key购买 nike

我有一个简单的 bean,带有 enum field

public class TestBean{
@Pattern(regexp = "A|B") //does not work
private TestEnum testField;
//getters + setters
}

enum TestEnum{
A, B, C, D
}

我想验证 testField使用 Bean 验证。具体来说,我想确保只允许 A 和 B 值(对于特定的校准组)。似乎枚举没有处理 JSR 303(我试图使用 @Pattern 验证器)或者我正在以错误的方式做某事。

我收到异常:
javax.validation.UnexpectedTypeException: No validator could be found for type: packagename.TestEnum

有没有办法在不编写自定义验证器的情况下验证枚举字段?

最佳答案

如果要将约束放在 testField 上,则需要自定义验证器。没有一个默认的处理枚举。

作为一种解决方法,您可以添加一个 getter 方法,该方法返回枚举的字符串值

public class TestBean{
private TestEnum testField;
//getters + setters

@Pattern(regexp = "A|B") //does not work
private String getTestFieldName() {
return testField.name();
}
}

不过,自定义验证器可能是更清洁的解决方案。

关于jakarta-ee - 枚举字段的 JSR-303 Bean 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10445197/

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