【发布时间】:2021-01-19 16:43:46
【问题描述】:
我知道...这种问题已经被 stackOverflow 上的其他用户报告了。尽管如此,我一直在尝试很多不同的解决方案,但都没有成功。我正在使用 spring-boot 编写一个休息微服务并将我的消息加载到文件夹下:“/src/main/resources”
同一个文件夹中存在三个不同的消息文件:
messages.properties;
messages_en_US.properties
messages_pt_BR.properties
我的 bean 验证消息是这样映射的:
@NotBlank(message = "{customer.input.password.notblank}")
@Length(max = 12,message="{customer.input.password.maxlength}")
@NotNull(message="{customer.input.password.notnull}")
@ValidPassword(message = "{customer.input.password.invalid}")
private String password;
我的 MessageSource bean 是在我的主 Spring Boot 类中定义的。
@Bean(name="messageSource")
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
Locale.setDefault(Locale.US);
messageSource.setBasename("/WEB-INF/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
我有一个实用程序类负责从文件中获取消息:
package com.rumblesoftware.utils;
import java.util.Locale;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.MessageSource;
import org.springframework.stereotype.Component;
@Component
public class PostOfficer {
@Autowired
@Qualifier(value = "messageSource")
private MessageSource ms;
public String getMessage(String messageId) {
return ms.getMessage(messageId,null,Locale.getDefault());
}
}
当我尝试输入无效密码时终于出现错误消息
org.springframework.context.NoSuchMessageException: No message found under code '{customer.input.password.invalid}' for locale 'en_US'.
at org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:161) ~[spring-context-5.2.7.RELEASE.jar:5.2.7.RELEASE]
【问题讨论】:
标签: java spring validation message