我的项目中有一个属性文件message_en.properties message_de.properties,我有条目InfoBox_description = welcome到这个应用程序和相应的德语值。现在应该允许用户动态更改描述,同样应该反映在其他属性文件中也有正确的转换。我应该这样做吗?我正在使用JSF2和主要面孔
提前致谢
答案 0 :(得分: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所解释的那样,让战争中的属性文件发生变化并不方便,因为如果重新部署战争,那么更改就会丢失。如果您有权访问它,可以将属性文件放在服务器的文件系统中;或者不使用属性文件(改为使用数据库)