我有以下情况:我从移动设备获得了一个区域设置列表,我需要检查我的MessageSource是否与传递的列表有任何匹配。因此,默认情况下,我可以通过一个语言环境进行检查,如果spring找不到匹配项,它将使用默认语言环境,但在我的情况下,我需要检查语言环境列表。春天有没有对此功能的支持?
答案 0 :(得分:0)
我能够通过以下方式修复它:
@Bean
public CustomMessageSource messageSource() {
CustomReloadableResourceBundleMessageSource messageSource = new CustomReloadableResourceBundleMessageSource();
messageSource.setFallbackToSystemLocale(false);
messageSource.setBasename("messages");
return messageSource;
}
public class CustomReloadableResourceBundleMessageSource extends
ResourceBundleMessageSource implements CustomMessageSource {
public String getMessage(String code, List<Locale> locales) {
return locales.stream().map(locale -> getMessage(code, null, locale))
.filter(StringUtils::isNotEmpty).findFirst()
.orElse(getMessage(code, null, Locale.ENGLISH));
}
}
将 fallbackToSystemLocale 属性设置为false非常重要,因为否则系统会为每个未解析的消息使用默认区域设置。