我正在处理一个 Spring MVC 项目 (Spring Boot v1.4.2),我需要从本地化的 message.properties
文件中解决一些错误代码。
例如,我得到的验证错误之一是:
org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'signUpDTO' on field 'email': rejected value [email@hotmail.com]; codes [EmailAlreadyUsed.signup.signUpDTO.email,EmailAlreadyUsed.signup.email,EmailAlreadyUsed.signup.java.lang.String,EmailAlreadyUsed.signup]; arguments []; default message [null]
如您所见,从基本错误代码 (EmailAlreadyUsed.signup
) 开始生成错误代码列表:
codes [EmailAlreadyUsed.signup.signUpDTO.email,EmailAlreadyUsed.signup.email,EmailAlreadyUsed.signup.java.lang.String,EmailAlreadyUsed.signup];
我想检查我的 message.properties
中是否定义了这些代码,并解析与之关联的消息。
目前我正在使用这个解析单个代码的实用程序类:
@Component
public class LocalizedMessageProvider {
@Autowired
private MessageSource messageSource;
public String getMessage(String code , Object... arguments) {
Locale locale = LocaleContextHolder.getLocale();
return messageSource.getMessage(code, arguments, locale);
}
}
Spring 中是否有一些开箱即用的实用程序,或者我应该简单地遍历每个错误代码?
最佳答案
我刚刚发现 MessageSource
接口(interface)声明了这个方法:
getMessage(MessageSourceResolvable resolvable, Locale locale)
它接受一个 MessageSourceResolvable
对象(因此任何由 Spring 内部构建的验证错误)并且以类似于我需要的方式工作。
它获取为验证错误生成的每个错误代码,并检查消息资源包中是否至少声明了一条关联消息。
关于java - 从一组代码中解析可用消息的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41703624/