spring ResourceBundleMessageSource setBaseName方法是否允许前缀“file”?

68de4m5k  于 2024-01-05  发布在  Spring
关注(0)|答案(1)|浏览(146)

尝试从junit测试中为ResourceBundleMessageSource spring class设置一个bascursor,当测试尝试获取一条消息时,我得到了下面的“no message found under key....."。我下面有一个测试的下一个配置。MessageSourceHolder是一个静态类来保存messageSource。setBascursor参数有问题吗?。不允许使用前缀“file”?。我确实有一个message.properties文件,在“src/main/resources/i18 n”下。

  1. AbstractResourceBasedMessageSource messageSource = new ResourceBundleMessageSource();
  2. messageSource.setBasename("file:src/main/resources/i18n/messages");
  3. messageSource.setFallbackToSystemLocale(false);
  4. MessageSourceHolder.setMessageSource(messageSource);

字符串
如果我这样做,它会起作用:

  1. File file = Paths.get("src/main/resources/i18n/messages.properties").toFile();
  2. Properties properties = new Properties();
  3. properties.load(new FileReader(file));
  4. AbstractResourceBasedMessageSource messageSource = new ResourceBundleMessageSource();
  5. messageSource.setCommonMessages(properties);
  6. MessageSourceHolder.setMessageSource(messageSource);

dfddblmv

dfddblmv1#

我注意到在ResourceBundleMessageSource类文档中说:
基本名称遵循ResourceBundle约定:本质上,一个完全限定的类路径位置
所以它不允许前缀文件。类PaddableResourceBundleMessageSource意味着允许前缀,因为它遵循资源约定。

相关问题