代码之家  ›  专栏  ›  技术社区  ›  Nicola Montecchio

struts 2-我应该在哪里设置全局应用程序变量?

  •  1
  • Nicola Montecchio  · 技术社区  · 16 年前

    我使用Struts 2,我想读取一些自定义的参数(全局变量),最好是从Web.xml或一些定制的“.Frase'”文件(即Java源中没有硬编码)。在过去的半个小时里,这个问题一直让我抓狂,因为我无法在谷歌上找到任何合理的解决方案。

    最好的方法是什么?我觉得很奇怪,这是如此困难…

    万事如意

    尼古拉·蒙特乔

    3 回复  |  直到 16 年前
        1
  •  0
  •   leonbloy    16 年前

    首先扪心自问:这些常数是真的与struts2相关,还是仅仅与你的应用程序相关?

    如果后面的问题不是struts2问题,而且您-相信我-不想将您的“常量”管理绑定到struts2(或web.xml),那么应该可以从webapp之外的应用程序代码(例如,从一些测试代码)访问它们。

    我知道你对某些(比如说)中的“harcoding”常量感到很难过。 常量 类(带有静态最终字段),但请注意,这可能不是那么糟糕的做法-如果它们是真正的常量,不可能独立于Java代码进行更改。值得一想。

    如果没有,你可能需要一些 康斯坦茨经理 类,它可能是单例无状态对象(或某种“服务”对象),知道如何加载常量,例如从类路径中的某个属性文件加载常量。应用程序的对象(可能包括一些struts2操作)如何获得对该constantsmanager实例的引用?在最简单(也是最脏)的实现中,您将拥有一个带有静态getInstance()方法的单例模式实现。更灵活和时尚的是 DI/IOC 方式,可能有一些豆子容器,如spring;struts2非常适合玩 that . 如果你不熟悉这些概念,它们肯定很快就会出现,因为访问某些常量的问题类似(但不那么简单)。

        2
  •  1
  •   Jim Kiley    16 年前

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

        3
  •  0
  •   Kartik    16 年前

    我不知道这是否有效,但是 http://struts.apache.org/2.0.6/struts2-core/apidocs/com/opensymphony/xwork2/ActionContext.html#get%28java.lang.Object%29

    actionContext.getContext().get(…)可能工作。