java - 从一组代码中解析可用消息的简单方法

标签 java spring spring-mvc spring-boot

我正在处理一个 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/

相关文章:

java - Java/Scala 中的高性能字符串哈希函数

java - 使用 webservice 调用某些使用资源文件的 java 应用程序方法时出现问题

java - 运行基于Spring的应用程序时如何解析占位符?

java - Spring MVC 验证模型

javafx,拖动优化 - 各种想法

java - 默认情况下使用 zk 展开第一组并折叠剩余组

java - 如何在 JBoss 6.3 EAP 上部署 Spring 管理的 JPA 应用程序

java - 使用多参数方法的 Spring bean 初始化

java - Hibernate自动增量序列在删除和插入后丢失

java - 如何使我的 URL 仅为 "localhost:8080/*"?