我想读取 messages.properties 文件中的属性。但是当我打电话时
messageSource.getMessage("property", null, Locale.getDefault())
我收到 NoSuchMessageException。
我已经尝试将 messages.properties-File 重命名为 messages_de_DE.properties 并使用 Locale.GERMANY,但没有区别。
该文件位于 src/main/resources
这是我的入门类(class):
@SpringBootApplication
public class Start extends SpringBootServletInitializer {
public static void main(final String[] args) {
SpringApplication.run(Start.class, args);
}
@Bean
public MessageSource messageSource() {
final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath*:messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Bean
public LocalValidatorFactoryBean validator(final MessageSource messageSource) {
final LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
bean.setValidationMessageSource(messageSource);
return bean;
}
}
我做错了什么?
最佳答案
尝试这样的事情:
@Configuration
public class MessageConfig {
private final MessageSource source;
private final MessageSourceAccessor accessor;
@Autowired
public MessageConfig(MessageSource messageSource) {
this.accessor = new MessageSourceAccessor(this.source = messageSource, new Locale("de", "DE"));
}
@Bean
public Validator validator() {
LocalValidatorFactoryBean factory = new LocalValidatorFactoryBean();
factory.setValidationMessageSource(this.source);
return factory;
}
public String get(String msg) {
try {
Assert.hasText(msg, "message code must be not blank");
return this.accessor.getMessage(msg.trim());
} catch (NoSuchMessageException e) {
return '{' + msg + '}';
}
}
}
请使用现有的 MessageSource
并将属性文件放入 /src/main/resources
。
另外,尝试将消息文件重命名为 messages_de.properties
。
关于java - 调用 MessageSource#getMessage 时如何修复 'NoSuchMessageException',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56674647/