1

我的项目中有一个属性文件 message_en.properties message_de.properties,并且我有条目 InfoBox_description=welcome to this application 和相应的德语值。现在应该允许用户动态更改描述,并且同样应该通过正确的转换反映在其他属性文件中。我应该怎么做?我正在使用 JSF2 和素面

提前致谢

4

1 回答 1

0

假设你在你的战争中有你的属性文件,在源文件夹的一个包中,这就是你在托管 bean 中加载它的方式:

Properties properties = new Properties();
try {
   ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
   properties.load(classLoader.getResourceAsStream("/yourfile.properties"));
} catch (IOException e) {
    // handle exception
}

// then initialize attributes with the contents of properties file. Example:
property1 = properties.getProperty("property1");
property2 = properties.getProperty("property2");

然后,当用户更新值(提交表单)并且您想要更新属性文件时,请执行以下操作:

properties.setProperty("property1", property1);
properties.setProperty("property2", property2);

try {
    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    URL url = classLoader.getResource("/yourfile.properties");
    properties.store(new FileOutputStream(new File(url.toURI())), null);
 } catch (Exception e) {
     // handle exception
 }

如果属性文件不在战争中(它在服务器的文件系统中),它也是可能的,但有点复杂..

编辑:正如 BalusC 解释的那样,在你的战争中更改属性文件并不方便,因为如果你重新部署你的战争,那么更改就会丢失。如果您可以访问它,您可以将属性文件放在服务器的文件系统中;或不使用属性文件(改用数据库)

于 2013-05-30T11:25:07.980 回答