有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

背景

我正在使用Maven开发一个Java Web应用程序。我已经用以下路径和格式创建了ResourceBundle:src/main/resources/i18n/LanguageBundle_xx_xx。属性

一切都很完美,我的所有东西都在前端工作(使用JSTL)

问题

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

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

在这个初始化servlet中,我从数据库中获取所有的键/值对,但现在我想将它们添加到LanguageBundle中,以便在出现第一个jsp页面时就可以进行翻译

我已经试过了:

  1. 从数据库返回所有键/值对
  2. 迭代返回的值
  3. 如果LanguageBundle_xx_xx中不存在密钥
  4. 使用属性添加键/值。放置(“键”、“值”)

现在,这确实添加了属性,但是如果我试图访问该范围之外的特定属性(例如,其他servlet、jsp),它会失败,因为它在特定的应用程序中不存在。属性文件

我该如何解决这个问题


共 (1) 个答案

  1. # 1 楼答案

    更新:

    我想出了一个有效的解决方案

    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);
    

    有人能告诉我这是一个坏习惯还是可以使用

    谢谢