簡體   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