lib - Struts y Spring juntos?
tag lib jstl (3)
Soy bastante nuevo para Struts y Spring. Necesito saber cómo acceder a un Spring Service en un Struts ActionForm. Incluso un puntero en la dirección correcta sería apreciado.
¿Estás usando Struts 1 o 2?
Si está utilizando Struts 1, hay dos formas de hacerlo. Prefiero hacerlo usando org.springframework.web.struts.DelegatingActionProxy. Necesitarás tener spring-webmvc-struts.jar en classpath.
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" />
He encontrado que esta técnica es la más elegante, no afecta el código antiguo que no usa la primavera.
Hay al menos dos formas más de integrar los puntales 1 con la primavera. Hay un artículo en ibm developerworks que explica los pros y los contras de las diferentes soluciones, google "Obtenga un mejor manejo de las acciones de Struts, con Spring" (los novatos como yo no podemos incluir enlaces).
Desde una clase struts 1 ActionForm necesitarás:
WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext).getBean("yourService");
Normalmente agrega el oyente de carga de contexto de primavera a su web xml.
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Luego agregas
<constant name="struts.objectFactory" value="spring"/>
a su struts.xml.
Luego, en su clase de acción puede decir cosas como:
class MyAction {
@Autowired MyService service;
....
}
Eso es todo lo que hay para struts2.