-->

Struts 2的 - 我应该在哪里设置全局应用程序变量?(struts 2 - where sho

2019-10-21 09:11发布

我使用的撑杆2,我想读一些自定义的参数(全局变量),优选的web.xml或一些自定义“的.properties”文件(即Java源代码没有硬编码)。 此问题已被我逼疯了过去半小时,因为我不能谷歌的任何合理的解决方案。

做这个的最好方式是什么? 我觉得很奇怪,它是如此的困难...

祝一切顺利

尼古拉·蒙太奇

Answer 1:

问问自己,第一:是那些真正的常数相关的Struts2的,或者只是你的应用程序?

如果后来,这是不是一个真正的Struts2的问题,而你以诚取信我 - 不”要配合你‘常量’管理Struts2的(或web.xml中),他们应该从Web应用程序之外的应用程序代码入店(例如从一些测试代码)。

据我所知,你觉得不好的一些(比如说) 常量类“harcoding”常数(静态final字段),但要注意,这可能不是那么糟糕的做法-如果他们是真正的常数,不太可能独立改变了你Java代码。 值得思考。

如果没有,你可能需要一些ConstantsManager类,这可能是一个无状态的单对象(或某种“服务”的对象),它知道如何从classpath中的一些属性文件加载的常量,例如。 如何你的应用程序中的对象(包括也许有些Struts2的动作)获得该ConstantsManager实例的引用? 在最简单的(和最肮脏的)实现,你必须有一个静态的getInstance()方法的Singleton模式的实现。 更灵活和时尚的是DI / IOC的方式,也许一些豆子的容器,如春; 和Struts2的非常适合玩那个 。 如果你不熟悉这个概念,他们肯定会很快流行起来,对于类似的(但不平凡的)问题,在访问一些常量。



Answer 2:

有几个方法可以做到这一点。

  • 常量可以在struts.xml中(设置http://struts.apache.org/2.x/docs/constant-configuration.html )。
  • 如果你使用Struts 2一起使用Spring,你应该能够设置一些参数在你的applicationContext.xml。
  • 你也可以考虑使用JNDI性能,具体到每个应用服务器的部署配置文件( http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html )


Answer 3:

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.



文章来源: struts 2 - where should I set global application variables?