我正在使用struts 2,我想读取一些自定义参数(全局变量),最好是从web.xml或一些自定义“.properties”文件(即不在Java源代码中硬编码)。这个问题让我疯狂了半个小时,因为我无法谷歌任何合理的解决方案。
最好的方法是什么?我觉得奇怪的是它很难......
一切顺利
Nicola Montecchio
答案 0 :(得分:1)
有几种方法可以做到这一点。
答案 1 :(得分:0)
首先问问自己:这些常量是否与Struts2或您的应用程序真正相关?
如果是后者,这实际上并不是Struts2的问题,并且你 - 我不希望将“常量”管理绑定到Struts2(或web.xml),它们应该可以从webapp之外的应用程序代码中访问(例如,来自某些测试代码)。
我理解你在某些(例如) Constants 类中使用静态最终字段来“训练”常量感觉不好,但要注意这可能不是那么糟糕的练习 - 如果它们是真正的常量,不太可能独立于您的java代码进行更改。值得一想。
如果没有,你可能需要一些 ConstantsManager 类,它可能是一个单独的无状态对象(或某种'Service'对象),它知道如何加载常量,例如某些类路径中的属性文件。应用程序的对象(包括某些Struts2操作)如何获取对该ConstantsManager实例的引用?在最简单(最脏)的实现中,您将拥有一个带有静态getInstance()方法的Singleton模式实现。更灵活和时尚的是DI/IOC方式,也许是一些豆类容器,如Spring;和Struts2非常适合与that一起玩。如果你不熟悉这个概念,那么它们肯定会很快出现,因为这些问题与访问某些常数类似(但不那么简单)。
答案 2 :(得分:0)
ActionContext.getContext()。get(...)可能有效。