Struts и весна вместе? - PullRequest
       22

Struts и весна вместе?

2 голосов
/ 09 декабря 2008

Я довольно новичок в Struts и Spring. Мне нужно знать, как получить доступ к сервису Spring в Struts ActionForm. Был бы признателен даже указатель в правильном направлении.

Ответы [ 3 ]

2 голосов
/ 10 декабря 2008

Из распорок 1 класс ActionForm вам понадобится:

WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext).getBean("yourService");
2 голосов
/ 25 мая 2009

Используете ли вы Struts 1 или 2?

Если вы используете Struts 1, есть несколько способов сделать это. Я предпочитаю делать это с помощью org.springframework.web.struts.DelegatingActionProxy. Вам нужно будет иметь spring-webmvc-struts.jar в пути к классам.

распорка-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.

Есть еще как минимум два способа соединения распорок 1 с пружиной. В ibm developerworks есть статья, в которой объясняются плюсы и минусы различных решений, в Google "Получите лучшее управление действиями в Struts с помощью Spring" (новичкам, подобным мне, не разрешается включать ссылки).

1 голос
/ 09 декабря 2008

Обычно вы добавляете слушатель весеннего контекстного загрузчика в ваш веб-файл 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;
   ....
}

Это все, что нужно для распорок2.

...