Spring webflow не может получить доступ к компонентам mvc

Я пытаюсь использовать некоторые аннотированные классы @Service (да, используя mvc:annotation-driven) в следующем веб-потоке:

manage-flow.xml

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/webflow
    http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd" start-state="start" >



<view-state id="start" view="Userview.jsp" >

<on-render>

    <set name="flowScope.users"
        value="UserService.getUsers()">
    </set>
</on-render>
</view-state>
<bean-import resource="Manage-Beans.xml"/>
</flow>

Manage-Beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean class="com.dproductions.test.Service.SiteService" id="SiteService" />
<bean class="com.dproductions.test.Service.CustomerService" id="CustomerService" />
<bean class="com.dproductions.test.Service.UserService" id="UserService" />

 </beans>

При попытке добраться до потока я получаю следующую трассировку стека: http://pastebin.com/QmCXe45Y

Что сводится к тому, что Webflow не может получить доступ к указанным пакетам. Но это не дает 'ClassNotFoundException' , что меня немного озадачивает.

Любое предложение приветствуется.

Кроме того, мой контекст сервлета находится здесь: Контекст сервлета

Я борюсь с этим уже больше недели.

Изменить

Я хочу иметь возможность использовать свои bean-компоненты так, как они используются в Этот пример , в состоянии действия bean-компоненты извлекаются/управляются непосредственно Spring MVC . Должны ли bean-компоненты быть объявлены (и сериализуемы?) в контексте приложения? Использование xml-нотации?


person Daneo    schedule 26.08.2012    source источник


Ответы (2)


Если я изменю

<set> 

к

<evaluate expression>

и есть bean-компоненты, определенные в файле Manage-Beans.xml , он работает.

Но таким образом я должен определить один и тот же bean-компонент дважды, так как он один раз подхватывается аннотацией pkg-search, а затем снова в веб-потоке. Я хотел бы иметь бобы, которые уже сделаны.

Spring веб-поток повторно создает/создает экземпляр bean-компонента. Вы можете ссылаться на свойства, автоматически связывать их с bean-компонентами в файле импорта bean-компонентов веб-потока, но это похоже на новый контекст, не знающий о существующих bean-компонентах. (Использование событий относится как к файлам потока, так и к файлам обычного контекста.)

person Daneo    schedule 28.08.2012

java.lang.IllegalStateException: произошло исключение при отображении представления org.springframework.web.servlet.view.JstlView: без имени; URL [/WEB-INF/flows/manage/Userview.jsp] org.springframework.webflow.mvc.view.AbstractMvcView.render(AbstractMvcView.java:191) org.springframework.webflow.engine.ViewState.render(ViewState.java :296) org.springframework.webflow.engine.ViewState.refresh(ViewState.java:243) org.springframework.webflow.engine.ViewState.resume(ViewState.java:221) org.springframework.webflow.engine.Flow.resume (Flow.java:545) org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:258) org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:169) org.springframework.webflow .mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827) ) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java: 882) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) javax.servlet.http.HttpServlet.service(HttpServlet.java: 722) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:322)

Проверьте расположение файла просмотра.

person Akhi    schedule 26.08.2012
comment
но в контексте вашего приложения его ViewResolver настроен как ‹beans:property name=prefix value=/WEB-INF/views/ /› - person Akhi; 26.08.2012
comment
Да, это правильно. Для уверенности я поместил представление в папку, содержащую представление, но представление также находится в папке представлений. Насколько я знаю, это должно сделать это уверенностью в правильном местоположении. При удалении ‹on-render› ‹set name=flowScope.users value=UserService.getUsers()› ‹/set› ‹/on-render› он загружается отлично, за исключением, конечно, отсутствия данных. Таким образом, проблема не в местоположении, а в доступе к bean-компонентам, определенным в Spring MVC (на основе аннотаций). - person Daneo; 27.08.2012