3
如何从struts2.xml在struts.xml中注入动作的实现类?如何在struts.xml中重新映射Action实现类?
设在struts.xml如下所示:
<struts>
<action name="EnginesList" class="example.EnginesListAction">
<result name="*">viewengines.jsp</result>
</action>
</struts>
然后我想实现:在当struts2.xml存在(或不为空),然后在struts2.xml类的映射覆盖那些struts.xml中。所以如果我有以下定义,那么在运行时EnginesList被映射到example.EnginesListAction2而不是example.EnginesListAction。
// struts.xml:
<struts>
<action name="EnginesList" class="example.EnginesListAction">
<result name="*">viewengines.jsp</result>
</action>
<include file="struts2.xml" />
</struts>
// struts2.xml
<struts>
<action name="EnginesList" class="example.EnginesListAction2">
<result name="*">viewengines.jsp</result>
</action>
</struts>
由于名称冲突,这似乎不起作用。那么实现我最终目标的最佳方式是什么?
背景加入:
- 队-A开发和维护的struts.xml。我的团队(团队B)使用团队A的代码库并将其部署到单独的数据中心。
- Team-B需要将一些动作映射到不同的类。但是我们不能在struts.xml中直接修改它,因为它会改变Team-A服务的行为。
- 所以我想要的是有一个单独的文件(struts2.xml),它的类映射可以覆盖struts.xml中的文件。行动包名称没有变化。 JSP代码没有变化。这个struts2.xml将只被部署在B队的数据中心。
你的最终目标*是什么?你为什么需要这个? – 2014-09-03 08:39:17
@AleksandrM struts.xml由团队A维护,我们的团队(团队B)不允许修改struts.xml中的类映射,所以我们必须从单独的文件中注入类映射。如果这个注入有效,那么team-A只在加载了struts.xml的情况下启动它们的服务器,而team-B在加载struts.xml和struts2.xml的同时启动它们的服务器。 – zzhang 2014-09-03 14:28:07
@zzhang编辑一个问题,您可以在编辑:**标记下添加详细信息,而不是从中删除重要内容,试图以这种方式修改问题。 – 2014-09-03 16:03:56