背景
我正在使用 Maven 开发 Java Web 应用程序。我已经按照以下路径和格式创建了 ResourceBundle:src/main/resources/i18n/LanguageBundle_xx_XX.properties。
一切都完美无缺,我在前端工作(使用 JSTL)。
问题
用户可以从前端创建 KEY/VALUE 对,然后以以下格式存储在 MySQL 数据库中:KEY | 值
我有一个初始化 servlet,它在将用户带到第一个 jsp 页面之前完成所有设置。
在那个初始化 servlet 中,我从数据库中获取了所有 KEY/VALUE 对,但现在我想将它们添加到 LanguageBundle 中,以便在第一个 jsp 页面出现时准备好翻译。
到目前为止我已经尝试过:
- 从数据库中返回所有键/值对
- 迭代返回值
- 如果 KEY 在 LanguageBundle_xx_XX 中不存在
- 使用 property.put("KEY","VALUE") 添加 KEY/VALUE
现在,这确实添加了属性,但是如果我尝试访问该范围之外的特定属性(例如,其他 servlet、jsp),它会失败,因为它不存在于特定的 .properties 文件中。
我该如何解决这个问题?
最佳答案
更新:
我想出了一个可行的解决方案。
Properties prop = new Properties();
InputStream in = getClass().getResourceAsStream("/i18n/LanguageBundle_en_US.properties");
prop.load(in);
prop.setProperty("KEY", "VALUE");
in.close();
prop.store(new FileOutputStream(getClass().getClassLoader().getResource("/i18n/LanguageBundle_en_US.properties").getFile()), null);
有人可以告诉我这是不好的做法还是可以使用?
谢谢。
关于Java:如何在运行时将数据库中的属性添加到 ResourceBundle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38960893/