Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javax.validation验证值列表?_Java_Spring_Validation_Javax - Fatal编程技术网

javax.validation验证值列表?

javax.validation验证值列表?,java,spring,validation,javax,Java,Spring,Validation,Javax,有没有一种方法可以使用javax.validation来验证一个名为color的字符串类型的变量,该变量只需要使用注释来具有这些值(红色、蓝色、绿色、粉色) 我见过@size(最小值=1,最大值=25)和@notnull,但是在(红色、蓝色、绿色、粉色) 与mysql中使用的关键字中的或多或少类似,您可以创建自定义验证注释。我将在这里编写它(未经测试的代码!): @Target({方法、字段、注释\类型、构造函数、参数}) @保留(运行时) @记录 @约束(validatedBy=InConst

有没有一种方法可以使用javax.validation来验证一个名为color的字符串类型的变量,该变量只需要使用注释来具有这些值(红色、蓝色、绿色、粉色)

我见过
@size(最小值=1,最大值=25)
@notnull
,但是在(红色、蓝色、绿色、粉色)


与mysql中使用的关键字
中的
或多或少类似,您可以创建自定义验证注释。我将在这里编写它(未经测试的代码!):

@Target({方法、字段、注释\类型、构造函数、参数})
@保留(运行时)
@记录
@约束(validatedBy=InConstraintValidator.class)
中的public@接口
{
String message()默认值为“YOURPACKAGE.In.message}”;
类[]组()默认值{};

类在这种情况下,我认为使用@Pattern注释会更简单,如下面的代码段。如果需要不区分大小写的求值,只需添加相应的标志:

@Pattern(regexp=“red | blue | green | pink”,flags=Pattern.Flag.不区分大小写)

您可以创建枚举

public enum Colors {
    RED, PINK, YELLOW
}
然后在您的模型中,您可以这样验证它:

public class Model {
    @Enumerated(EnumType.STRING)
    private Colors color;
}
这将根据枚举验证您的负载,因为您已经添加了 @有效的
在RestController中。

您可以自己创建验证类。供参考

Hi。我猜使用javax验证器是不可能的?我想我可以在表/数据库级别上创建一个约束?在尝试验证字符列表时很有用,但不能将“值”定义为对象数组。编译器出现以下错误:“.values中注释属性的类型对象[]无效;只允许使用基元类型、字符串、类、注释、枚举或其一维数组,我不这么认为@枚举的是javax.persistence注释,而不是javax.validation注释。如果红色-蓝色等是常量,该怎么办?
public class Model {
    @Enumerated(EnumType.STRING)
    private Colors color;
}