Java:如何在运行时将数据库中的属性添加到 ResourceBundle?

标签 java maven jsp servlets resourcebundle

背景

我正在使用 Maven 开发 Java Web 应用程序。我已经按照以下路径和格式创建了 ResourceBundle:src/main/resources/i18n/LanguageBundle_xx_XX.properties

一切都完美无缺,我在前端工作(使用 JSTL)。

问题

用户可以从前端创建 KEY/VALUE 对,然后以以下格式存储在 MySQL 数据库中:KEY |

我有一个初始化 servlet,它在将用户带到第一个 jsp 页面之前完成所有设置。

在那个初始化 servlet 中,我从数据库中获取了所有 KEY/VALUE 对,但现在我想将它们添加到 LanguageBundle 中,以便在第一个 jsp 页面出现时准备好翻译。

到目前为止我已经尝试过:

  1. 从数据库中返回所有键/值对
  2. 迭代返回值
  3. 如果 KEY 在 LanguageBundle_xx_XX 中不存在
  4. 使用 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/

相关文章:

java - Android 中的应用程序停止错误

java - 检索数据时保证缓存命中

python - 是否可以将 python 文件推送到 nexus 存储库

java - 有 getter 时没有 Getter Method Error

java - Java 与 JSP 的 JSTL 的性能比较

java - 修改android assets的HTML文件

java - 在 Java 中使用 ArrayList 内部的变量

java - Jersey 应用程序 404 未找到错误

maven - hudson:maven-sonar-plugin 执行无法从服务器下载库

mysql - 如何使用Controller Servlet将表单数据发送到数据库?