You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何替换Spring默认校验消息文件为ValidationMessages_fa.properties

替换Spring默认校验消息为波斯语(fa)的实操步骤

方法1:Spring Boot项目快速配置

如果是Spring Boot项目,直接修改配置文件即可,两种方式二选一:

方式A:全局设置波斯语为默认区域

在application.properties中添加:

# 将应用默认语言设为波斯语
spring.mvc.locale=fa_IR
# 固定使用该区域,不随请求动态变化
spring.mvc.locale-resolver=fixed
# 让Spring校验逻辑复用Hibernate Validator的消息解析规则
spring.validation.message-resolver=hibernate

或者使用application.yml格式:

spring:
  mvc:
    locale: fa_IR
    locale-resolver: fixed
  validation:
    message-resolver: hibernate

配置完成后,Hibernate Validator会自动识别并加载你提到的jar包内的ValidationMessages_fa.properties文件,用波斯语内容作为校验提示。

方式B:仅替换校验消息,不改动全局语言

如果不想修改整个应用的语言环境,只想单独替换校验提示内容,可以编写一个配置类:

import org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;

import java.util.Locale;

@Configuration
public class ValidatorConfig {

    @Bean
    public LocalValidatorFactoryBean validator() {
        LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean();
        // 强制指定加载波斯语的校验消息文件
        ResourceBundleMessageInterpolator interpolator = new ResourceBundleMessageInterpolator(
                () -> ResourceBundle.getBundle("org/hibernate/validator/ValidationMessages", new Locale("fa"))
        );
        factoryBean.setMessageInterpolator(interpolator);
        return factoryBean;
    }
}

方法2:普通Spring项目配置

非Spring Boot的Spring项目,需要手动配置Validator实例:

Java配置方式

编写配置类:

import org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;

import java.util.Locale;
import java.util.ResourceBundle;

@Configuration
public class ValidationConfig {

    @Bean
    public LocalValidatorFactoryBean validator() {
        LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
        validator.setMessageInterpolator(new ResourceBundleMessageInterpolator(
                () -> ResourceBundle.getBundle("org/hibernate/validator/ValidationMessages", new Locale("fa"))
        ));
        return validator;
    }
}

XML配置方式

如果使用XML配置Spring容器,添加以下配置:

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <property name="messageInterpolator">
        <bean class="org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator">
            <constructor-arg>
                <bean class="org.hibernate.validator.spi.resourceloading.ResourceBundleLocator" factory-method="createResourceBundleLocator">
                    <constructor-arg value="org/hibernate/validator/ValidationMessages"/>
                    <constructor-arg>
                        <bean class="java.util.Locale">
                            <constructor-arg value="fa"/>
                        </bean>
                    </constructor-arg>
                </bean>
            </constructor-arg>
        </bean>
    </property>
</bean>

验证效果

编写一个带校验注解的实体类测试:

import javax.validation.constraints.NotEmpty;

public class User {
    @NotEmpty
    private String username;

    // 需添加getter、setter方法
}

在Controller或Service中触发校验逻辑,返回的错误提示内容就会是波斯语了。


内容的提问来源于stack exchange,提问作者parsa faraji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 18:15:50