我的项目中有一个属性文件 message_en.properties message_de.properties,并且我有条目 InfoBox_description=welcome to this application 和相应的德语值。现在应该允许用户动态更改描述,并且同样应该通过正确的转换反映在其他属性文件中。我应该怎么做?我正在使用 JSF2 和素面
提前致谢
我的项目中有一个属性文件 message_en.properties message_de.properties,并且我有条目 InfoBox_description=welcome to this application 和相应的德语值。现在应该允许用户动态更改描述,并且同样应该通过正确的转换反映在其他属性文件中。我应该怎么做?我正在使用 JSF2 和素面
提前致谢
假设你在你的战争中有你的属性文件,在源文件夹的一个包中,这就是你在托管 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 解释的那样,在你的战争中更改属性文件并不方便,因为如果你重新部署你的战争,那么更改就会丢失。如果您可以访问它,您可以将属性文件放在服务器的文件系统中;或不使用属性文件(改用数据库)