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

标签 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() + ". ");
    }

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

最佳答案

我最终使用每个区域设置的属性文件解决了这个问题,名为 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

关于java - 如何自定义 javax 验证的区域设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16466258/

相关文章:

java - 克隆字符串数组,检查引用

java - 为什么 Properties.list 在打印前复制表格?

java - 多级java包

php - 检查输入的开始和结束日期是否在数据库中已有的开始和结束日期之间

jquery 验证电话号码和分机号

Android numberDecimal,考虑 xml 布局中的语言环境

java - 将 Scala 项目包含在 Java Maven 依赖项中

java - 跳过重新渲染的验证并仅在表单提交时应用

java - 从语言环境获取 GMT 时间

java - 挪威语的区域设置,博克马尔(挪威)问题