4

我在 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() + ". ");
    }

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

4

3 回答 3

1

启动应用程序时,您可以设置默认语言环境: 如何为我的 JVM 设置默认语言环境?

如果您使用应用程序服务器,只需查看文档如何执行此操作 - 通常有配置可以执行此操作,例如对于 JBoss,您需要将 -Duser.language=en 添加到 run.conf 的 JAVA_OPTS 部分。

于 2013-05-09T19:12:08.890 回答
1

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

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

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

于 2020-01-29T12:02:50.407 回答
0

我终于使用每个语言环境的属性文件解决了这个问题,命名为 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
于 2013-05-24T16:03:19.803 回答