如何替换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
相关产品推荐
相关产品推荐

