我对Struts和Spring都很陌生。我需要知道如何在Struts ActionForm中访问Spring Service。即使是正确方向的指针也会受到赞赏。
答案 0 :(得分:2)
从struts 1 ActionForm类中你需要:
WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext).getBean("yourService");
答案 1 :(得分:2)
您使用的是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>
的applicationContext.xml:
<bean name="/faq" class="com.mypackage.FAQAction" autowire="byType" />
我发现这种技术最优雅,它不会影响不使用spring的旧代码。
将struts 1与spring集成至少还有两种方法。在ibm developerworks上有一篇文章解释了不同解决方案的优缺点,google“使用Spring更好地处理Struts操作”(像我这样的新手不允许包含链接)。
答案 2 :(得分:1)
通常将spring contextloader listener添加到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的全部内容。