Интеграция JSF и spring web flow

#java #spring #jsf #spring-mvc #spring-webflow

#java #spring #jsf #spring-mvc #spring-webflow

Вопрос:

После следуйте [интеграции JSF]:http://docs.spring.io/spring-webflow/docs/2.4.0.RELEASE/reference/html/spring-faces.html мы используем org.springframework.faces.webflow.JsfFlowHandlerAdapter для адаптации SWF-запроса к прослушивателю JSF следующим образом.

     <bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
    <property name="order" value="1" />
    <property name="flowRegistry" ref="flowRegistry" />
    <property name="defaultHandler">
    <bean class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />
    </property>
    </bean>

    <!-- Maps logical view names to Facelet templates in /WEB-INF (e.g. 'search' 
    to '/WEB-INF/search.xhtml' -->
    <bean id="faceletsViewResolver"
    class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.faces.mvc.JsfView" />
    <property name="prefix" value="/WEB-INF/" /> 
    <property name="suffix" value=".xhtml" />
    </bean>

    <!-- Dispatches requests mapped to org.springframework.web.servlet.mvc.Controller 
    implementations -->
    <bean
    class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />

    <!-- Dispatches requests mapped to flows to FlowHandler implementations -->
    <bean class="org.springframework.faces.webflow.JsfFlowHandlerAdapter">
    <property name="flowExecutor" ref="flowExecutor" />
    </bean>
  

Однако все выражения EL в атрибуте action не разрешаются, а обрабатываются как строка и передаются в SWF для выполнения транзакции. Следовательно, следующий код в logon.xhtml приведет к недопустимой транзакции #{logonController.doLogin}.

     <h:commandButton type="submit" id="login" value="Login"
    action="#{logonController.doLogin}" />
  

Есть ли какой-либо способ для SWF разрешить выражение EL в атрибуте действия CommandButton и задействовать вспомогательный компонент, прежде чем возвращать результирующую строку в SWF для выполнения транзакции?

Спасибо за вашу помощь.

Комментарии:

1. попробуй action="logonController.doLogin" . Убедитесь, что bean logonController является управляемым spring.

2. JSF и Spring MVC — это параллельные технологии, они делают то же самое, но совсем по-другому. JSF имеет свой собственный обработчик навигации. Таким образом, подобный эксперимент по их смешиванию не сработает или в конечном итоге доставит вам много проблем.

3. Что такое logonController.doLogin? Где это указано перед доступом в CommandButton?

4. Спасибо за вашу информацию.

5. Никхил Талреджа: logonController — это управляемый компонент bean и spring, как описано в [Примере интеграции JSF 2 Spring 3] ( mkyong.com/jsf2/jsf-2-0-spring-integration-example )