我在我的项目中有一个属性文件message_en.properties message_de.properties,并且我有条目InfoBox_description =欢迎使用这个应用程序和德语对应的值。现在用户应该被允许动态地改变描述,并且同样应该反映在其他属性文件中并且具有正确的转换。我应该这样做吗?我使用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
}
如果属性文件是不是在T他的战争(这是在服务器的文件系统),也可以,但有点复杂..
编辑:如BalusC解释的,具有属性文件,你的战争中变化并不方便,因为如果你重新部署你的战争,然后改变失败。如果您有权访问它,您可以将属性文件放入服务器的文件系统中;或不使用属性文件(使用数据库)
该webapp的'/ resources'文件夹没有被类路径覆盖。另外,当WAR不在磁盘文件系统上展开时,写入这种方式完全不起作用,而是在内存中展开。即使它起作用,在重新部署WAR或重新启动服务器时,所有更改都会丢失,原因很简单,原因是这些更改未包含在原始WAR中。 – BalusC
感谢@BalusC的评论。我前段时间实现了这个,我记不起是否放置了属性文件。我想这是在源文件夹中的包中。在我的实现中,我使用了一些服务器配置来访问服务器文件系统中的属性文件,因此重新部署后配置不会丢失,但问题未指定此 – Damian
@BalusC:如果用户动态改变英文,现在该怎么做我也反映德国人的变化吗?反之亦然。是否有任何此转换的API – shreekanth
- 1. Symfony - 动态编辑属性
- 2. Asp.Net MVC 3动态属性编辑器
- 3. Log4j.xml动态文件属性
- 4. 更新/编辑属性文件
- 5. 好的Java属性文件编辑器
- 6. 使用GemBox.Document编辑PDF文件属性
- 7. 编辑GtkWidget属性/属性
- 8. 从shell脚本编辑属性文件中的属性值
- 9. Kohana动态编辑配置文件
- 10. 在Laravel动态编辑config/database.php文件
- 11. 编辑动态文本HTML
- 12. XML编辑属性
- 13. 编辑Jtable属性
- 14. 用于多个lang.properties文件的Java属性文件编辑器?
- 15. 使用xml或Java属性文件编辑Jar文件
- 16. 为具有动态属性的对象添加/编辑操作
- 17. 使用选择框动态更改列的可编辑属性
- 18. 动态编辑嵌套的PHP对象属性
- 19. 在滚动上编辑UITableViewCell属性
- 20. 骡子动态属性文件引用
- 21. 富文本编辑器的属性
- 22. Java库,用于编辑文档属性
- 23. 编辑Word文档的属性
- 24. 的Java属性编辑器 - 如何强制我创建了一个属性编辑器属性编辑器
- 25. 在属性文件中动态加载属性值
- 26. WPF用户控件编辑属性
- 27. Wix:编辑控件未设置属性
- 28. Soundcloud:如何编辑小部件属性
- 29. 如何编辑组件的属性?
- 30. 可可属性编辑器控件?
如果应该动态更改某些内容,则不应使用属性。重新思考你的设计,因为你打算做的事实在是个坏主意。 –
[在何处放置配置属性文件到JSP/Servlet Web应用程序中?](http://stackoverflow.com/questions/2161054/where-to-place-configuration-properties-files-in-a-jsp -servlet-web-application)虽然在你的具体情况下,我认为存储在数据库中并使用自定义资源包控制是一个更好的解决方案,这样你也可以更好地控制缓存。 – BalusC
@LukŁukaszLech:我同意你的看法,但这对我来说并不合适,但在我的情况下,用户不会经常更改描述,但只需很少的时间,他希望动态地执行此操作,并希望使用属性文件进行转换。 – shreekanth