Temat: Spring Web Flow i JSF
Udało się wyeliminować problem z suffixem wg Twoich wskazówek ale za to pojawił się inny problem. Wcześniej na stronie działały mi commandLinki które to po kliknięciu wywoływały mi inny stan w obrębie flow a po dodaniu tego:
webflow:flow-builder-services id="myView" view-factory-creator="myViewFactoryCreator"/>
<bean id="myViewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
<property name="viewResolvers" ref="viewResolver2"/>
</bean>
po naciśnięciu na link nic się nie dzieje. Zastanawia mnie czego jeszcze mi brakuje.
W pliku konfiguracyjnym webmvc-config.xml mam takie definicje:
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="viewResolver2" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.faces.mvc.JsfView"/>
<property name="prefix" value="/WEB-INF/flows/"/>
<property name="suffix" value=".jsp" />
</bean>
Plik webflow-config.xml ma taką zawartość:
<webflow:flow-executor id="flowExecutor" />
<webflow:flow-registry id="flowRegistry"
flow-builder-services="facesFlowBuilderServices">
<webflow:flow-location path="/WEB-INF/flows/login/login.xml" />
</webflow:flow-registry>
<webflow:flow-builder-services id="facesFlowBuilderServices" view-factory-creator="myViewFactoryCreator"/>
<bean id="myViewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
<property name="viewResolvers" ref="viewResolver2"/>
</bean>
Definicja flowa login.xml
<view-state id="login" view="login/loginForm">
<var name="testBean" class="mg.formhandlers.TestFormHandler"/>
<on-render>
<set name="flowScope.name" value="testFormHanlder.name"></set>
</on-render><transition on="next" to="test"/>
<transition on="finish" to="finish"/>
</view-state>
<view-state id="test" view="login/testForm">
<transition on="finish" to="finish"/>
</view-state>
<end-state id="finish" view="externalRedirect:contextRelative:spring/intro"/>
Widok loginForm jest zdefiniowany tak
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/tld/html_basic.tld" prefix="h" %>
<%@ taglib uri="/WEB-INF/tld/jsf_core.tld" prefix="f" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
tekst loginu
<h:form>
<h:outputText value="#{testBean.name}"></h:outputText>
<div>
<h:commandLink id="finish" action="finish" value="finishV">finish</h:commandLink>
</div>
<div>
<h:commandButton id="finishButton" action="finish" value="finish">finish button</h:commandButton>
</div>
<div>
<h:commandLink id="next" action="next">next</h:commandLink>
</div>
</h:form>
</body>
</html>
</f:view>
Przed dodaniem view-factory-creator działały mi powyższe commandLinki. Natomiast po dodaniu nie działają tzn. po ich naciśnięciu żadna akcja się nie wywołuje.