我使用的撑杆2,我想读一些自定义的参数(全局变量),优选的web.xml或一些自定义“的.properties”文件(即Java源代码没有硬编码)。 此问题已被我逼疯了过去半小时,因为我不能谷歌的任何合理的解决方案。
做这个的最好方式是什么? 我觉得很奇怪,它是如此的困难...
祝一切顺利
尼古拉·蒙太奇
我使用的撑杆2,我想读一些自定义的参数(全局变量),优选的web.xml或一些自定义“的.properties”文件(即Java源代码没有硬编码)。 此问题已被我逼疯了过去半小时,因为我不能谷歌的任何合理的解决方案。
做这个的最好方式是什么? 我觉得很奇怪,它是如此的困难...
祝一切顺利
尼古拉·蒙太奇
问问自己,第一:是那些真正的常数相关的Struts2的,或者只是你的应用程序?
如果后来,这是不是一个真正的Struts2的问题,而你以诚取信我 - 不”要配合你‘常量’管理Struts2的(或web.xml中),他们应该从Web应用程序之外的应用程序代码入店(例如从一些测试代码)。
据我所知,你觉得不好的一些(比如说) 常量类“harcoding”常数(静态final字段),但要注意,这可能不是那么糟糕的做法-如果他们是真正的常数,不太可能独立改变了你Java代码。 值得思考。
如果没有,你可能需要一些ConstantsManager类,这可能是一个无状态的单对象(或某种“服务”的对象),它知道如何从classpath中的一些属性文件加载的常量,例如。 如何你的应用程序中的对象(包括也许有些Struts2的动作)获得该ConstantsManager实例的引用? 在最简单的(和最肮脏的)实现,你必须有一个静态的getInstance()方法的Singleton模式的实现。 更灵活和时尚的是DI / IOC的方式,也许一些豆子的容器,如春; 和Struts2的非常适合玩那个 。 如果你不熟悉这个概念,他们肯定会很快流行起来,对于类似的(但不平凡的)问题,在访问一些常量。
有几个方法可以做到这一点。
I don't know if this works but http://struts.apache.org/2.0.6/struts2-core/apidocs/com/opensymphony/xwork2/ActionContext.html#get%28java.lang.Object%29
ActionContext.getContext().get(...) might work.