2008-12-09 8 views
2

Je suis assez nouveau à la fois Struts et Spring. J'ai besoin de savoir comment accéder à un service de printemps dans un ActionForm Struts. Même un pointeur dans la bonne direction serait apprécié.Struts et printemps ensemble?

Répondre

1

Normalement, vous ajoutez l'écouteur spring contextloader à votre xml web.

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

Ensuite, vous ajoutez

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

à votre struts.xml.

Ensuite, dans votre classe d'action que vous pouvez dire des choses comme:

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

C'est tout ce qu'il ya à faire pour struts2.

2

D'un struts 1 classe ActionForm vous avoir besoin:

WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext).getBean("yourService"); 
2

Êtes-vous en utilisant Struts 1 ou 2?

Si vous utilisez Struts 1 alors il y a deux façons de le faire. Je préfère le faire en utilisant org.springframework.web.struts.DelegatingActionProxy. Vous aurez besoin du spring-webmvc-struts.jar dans le 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" /> 

J'ai trouvé cette technique pour être le plus élégant, il ne touche pas l'ancien code qui n » t utiliser le printemps.

Il existe au moins deux autres façons d'intégrer les entretoises 1 avec un ressort. Il y a un article sur ibm developerworks qui explique les avantages et les inconvénients des différentes solutions, google "Mieux gérer les actions de Struts, avec Spring" (les débutants comme moi-même ne sont pas autorisés à inclure des liens).