【问题标题】:How to read a specific key by value from properties file in java如何从java中的属性文件中按值读取特定键
【发布时间】:2019-08-20 10:20:59
【问题描述】:

我正在使用 spring 国际化我有 3 个消息属性文件 iam 使用 MessageSource 按键读取值,如下例所示。

        String value = messageSource.getMessage("key", null,LocaleContextHolder.getLocale());

但我想通过特定值读取键有什么解决方案吗?

【问题讨论】:

  • 无法通过 MessageSource 中的值读取键。您也不能遍历所有键。所以你必须阅读 java.util.Properties 中的属性文件并遍历所有条目

标签: spring hibernate spring-boot internationalization


【解决方案1】:

您可以通过创建来公开属性:

public class ExposedResourceBundleMessageSource extends
        ReloadableResourceBundleMessageSource {
    public Properties getMessages(Locale locale) {
        return getMergedProperties(locale).getProperties();
    }
}

然后在你的配置中声明它:

@Bean
public ExposedResourceBundleMessageSource messageSource() {
    ExposedResourceBundleMessageSource source = new ExposedResourceBundleMessageSource();
    source.setBasename("classpath:messages");
    source.setCacheSeconds(0);
    source.setDefaultEncoding("UTF-8");
    return source;
}

自动装配:

@Autowired
private ExposedResourceBundleMessageSource messageSource;

然后你可以按值搜索:

String searchTerm = "foo";
Entry<Object, Object> entry = messageSource.getMessages(LocaleContextHolder.getLocale()).entrySet().stream().filter(
        e -> ((String) e.getValue()).equals(searchTerm)).findFirst().orElse(null);
String key = (String) entry.getKey();

【讨论】:

  • 您误解了这个问题:Merwis 想要按值查找键。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
  • 2013-10-25
  • 2015-05-14
  • 1970-01-01
  • 2019-03-26
  • 2019-08-07
  • 2015-05-12
相关资源
最近更新 更多