Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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
Java 如何在Spring中将错误代码添加到ConstraintValidator?_Java_Spring - Fatal编程技术网

Java 如何在Spring中将错误代码添加到ConstraintValidator?

Java 如何在Spring中将错误代码添加到ConstraintValidator?,java,spring,Java,Spring,我实现了自己的注释和约束验证程序(JSR-303)。在验证过程中,我希望创建不同的错误代码: public class SomeValidator implements ConstraintValidator<ConstraintAnnotation,SomeObject> { @Override public void initialize (ConstraintAnnotation constraintAnnotation) { } @Overr

我实现了自己的注释和约束验证程序(JSR-303)。在验证过程中,我希望创建不同的错误代码:

public class SomeValidator implements ConstraintValidator<ConstraintAnnotation,SomeObject> {

    @Override
    public void initialize (ConstraintAnnotation constraintAnnotation) {
    }
    @Override
    public boolean isValid (SomeObject some, ConstraintValidatorContext context) {
        int parameter = some.getParameter();
        if (parameter==1){
            context.disableDefaultConstraintViolation();
            context.buildConstraintViolationWithTemplate("SomeObject.code.first").addConstraintViolation();
            return false;
        }
        if (parameter==2){
            context.disableDefaultConstraintViolation();
            context.buildConstraintViolationWithTemplate("SomeObject.code.second").addConstraintViolation();
            return false;
        }
        return true;
    }
}
不是


如何添加自定义代码而不是消息?

问题解决得非常简单:

1) 用{}环绕错误代码,如下所示:

ConstraintAnnotation.someObject
context.buildConstraintViolationWithTemplate("{SomeObject.code.first}").addConstraintViolation();
2) 将属性文件添加到资源文件夹(它是maven项目中的资源文件夹):

ValidationMessages_en_.properties文件内容

SomeObject.code.first=Illegal link value
验证之后,生成代码not消息,spring将错误代码解析为实际消息

注意:

  • 实际上,您可以将ValidationMessages_en_.properties(和其他i18n属性文件)放在spring项目的每个地方。若你们把它放在另一个位置,你们需要配置LocalValidatorFactoryBean,理论上,实际上我做不到,在我的例子中代码并没有被解析,我把属性文件放在resources文件夹中
  • 您可以创建自定义错误消息,例如:“错误消息{error.code}”和“error.code”将替换为文件中的属性。看
  • ValidationMessages_en_US.properties
    
    SomeObject.code.first=Illegal link value