2

我对 Struts 和 Spring 都很陌生。我需要知道如何在 Struts ActionForm 中访问 Spring Service。即使是正确方向的指针也将不胜感激。

4

3 回答 3

2

从 struts 1 ActionForm 类中,您将需要:

WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext).getBean("yourService");
于 2008-12-09T22:03:36.413 回答
1

通常,您将 spring contextloader 侦听器添加到您的 web xml。

<listener>
 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

然后你添加

<constant name="struts.objectFactory" value="spring"/>

到你的 struts.xml。

然后在你的行动课上你可以说:

class MyAction {
  @Autowired MyService service;
   ....
}

这就是struts2 的全部内容。

于 2008-12-09T20:54:48.500 回答
1

您使用的是 Struts 1 还是 2?

如果您使用的是 Struts 1,那么有几种方法可以做到这一点。我更喜欢使用 org.springframework.web.struts.DelegatingActionProxy 来实现。您需要在类路径中有 spring-webmvc-struts.jar。

struts-config.xml:

   <action path="/faq" type="org.springframework.web.struts.DelegatingActionProxy" name="faqForm" parameter="method">
        <forward name="List" path="faq.list" />
    </action>

应用程序上下文.xml:

<bean name="/faq" class="com.mypackage.FAQAction" autowire="byType" />

我发现这种技术是最优雅的,它不会影响不使用 spring 的旧代码。

至少还有两种方法可以将支柱 1 与弹簧集成在一起。ibm developerworks 上有一篇文章解释了不同解决方案的优缺点,谷歌“Get a better handle on Struts actions, with Spring”(像我这样的新手不允许包含链接)。

于 2009-05-25T14:01:02.253 回答