#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 )