如何自定义 javax 验证的区域设置

Goy*_*oyo 5 java validation locale

我在 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() + ". ");
    }
Run Code Online (Sandbox Code Playgroud)

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

Goy*_*oyo 2

我最终使用每个区域设置的属性文件解决了这个问题,名为 ValidationMessages_es.properties 或 ValidationMessages_pt.properties 等。

\n\n

在每一个中,我都使用以下内容自定义了每条使用过的消息:

\n\n
javax.validation.constraints.NotNull.message=no puede ser nulo\norg.hibernate.validator.constraints.NotEmpty.message=no puede estar vac\xc3\xado\njavax.validation.constraints.Size.message=debe tener entre {min} y {max} caracteres\njavax.validation.constraints.Min.message=debe ser mayor que {value}\njavax.validation.constraints.Past.message=debe ser una fecha pasada\n
Run Code Online (Sandbox Code Playgroud)\n