如何自定义javax验证的语言环境

如何自定义javax验证的语言环境,java,validation,locale,Java,Validation,Locale,我有一个java类,我正在使用javax.validation验证它,代码如下: ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory(); Validator validator = validatorFactory.getValidator(); Set<ConstraintViolation<ApplicationRequest>> valida

我有一个java类,我正在使用javax.validation验证它,代码如下:

    ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
    Validator validator = validatorFactory.getValidator();
    Set<ConstraintViolation<ApplicationRequest>> validationErrors = validator.validate(request);

    for (ConstraintViolation<MyObject> valErrors : validationErrors) {
        errors.add(valErrors.getPropertyPath() + " " + valErrors.getMessage() + ". ");
    }
ValidatorFactory=Validation.buildDefaultValidatorFactory();
Validator Validator=validatorFactory.getValidator();
设置validationErrors=validator.validate(请求);
对于(约束冲突错误:验证错误){
添加(valerors.getPropertyPath()+“”+valerors.getMessage()+”);
}

现在,如果我在西班牙语服务器上执行它,错误消息将以西班牙语显示。但是,当我在测试服务器(安装在英语环境中)中执行它时,消息以英语显示。我如何告诉javax验证使用西班牙语的语言环境。有可能吗?

启动应用程序时,您可以设置默认语言环境:


如果您使用的是application server,只需查看文档如何执行此操作—通常会有相应的配置,例如对于JBoss,您需要将-Duser.language=en添加到run.conf的JAVA_OPTS部分。

我最终使用每个语言环境的属性文件解决了此问题,命名的ValidationMessages_es.properties或ValidationMessages_pt.properties等

在每一封邮件中,我都定制了每一封使用过的邮件:

javax.validation.constraints.NotNull.message=no puede ser nulo
org.hibernate.validator.constraints.NotEmpty.message=no puede estar vacío
javax.validation.constraints.Size.message=debe tener entre {min} y {max} caracteres
javax.validation.constraints.Min.message=debe ser mayor que {value}
javax.validation.constraints.Past.message=debe ser una fecha pasada

默认情况下,可以设置特定的区域设置,如下所示:

  static {
    Locale.setDefault(Locale.UK);
  }

在您的情况下,您应该将语言环境设置为西班牙语。

我们使用的是spring,因此我用更改了我的应用程序配置,但没有任何区别。没有直接配置javax.validation的选项吗?