繁体   English   中英

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

[英]Java: How do I add properties from a database to a ResourceBundle on runtime?

背景

我正在使用Maven开发Java Web应用程序。 我已在此路径和格式中创建了ResourceBundles: src / main / resources / i18n / LanguageBundle_xx_XX.properties

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

问题

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

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

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

我到目前为止尝试过:

  1. 从DB返回所有键/值对
  2. 迭代返回的值
  3. 如果LanguageBundle_xx_XX中不存在KEY
  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);

有人可以告诉我这是不好的做法还是可以使用?

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM