# Spring Web Flow Exception



## Generic1 (25. Mrz 2011)

Hallo,

ich bin gerade dabei mich mit SWF zu beschäftigen und hab dieses Projekt auf meinem Tomcat Server deployed: 

Spring Web Flows: A Practical Guide

Funktioniert auch soweit ganz gut bis auf wenn ich einen Vor- und Nachnamen eingegeben habe und aud Search geklickt habe, dann wird das Ergebnis angezeigt, Wenn ich dann auf den Aktualisierungsbutton des Browsers klicke, bekomme ich eine HTTP 500 Status Meldung mit folgender Exception:


```
com.ervacon.springframework.web.servlet.mvc.webflow.NavigationException: cannot find transition for event 'search' in state 'results' of flow 'Search Flow'
	com.ervacon.springframework.web.servlet.mvc.webflow.SimpleWebFlow.execute(SimpleWebFlow.java:165)
	com.ervacon.springframework.web.servlet.mvc.webflow.WebFlowController.handleRequestInternal(WebFlowController.java:301)
	org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:128)
	org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:532)
```

Weiß jemand was ich da dagegen machen kann, damit ich diese Fehlermeldung nicht mehr bekomme?
Vielen Dank,
lg


----------



## Noctarius (25. Mrz 2011)

Du befindest dich im State "results" und da gibt es keine Transition "search", genau wie es die Meldung aussagt.


----------



## Generic1 (27. Mrz 2011)

Ich hätte jetzt noch eine generelle Frage, ich hab mir jetzt eine WEB- FLOW- Datei geschrieben, welche auch sehr gut funktioniert (unten).
Wenn ich mich normal durchklicke, dann funktioniert alles Bestens. Wenn ich aber zwischendrinn mal auf "Aktualisieren" im Browser klicke, dann bekomme ich z.B. (je nach state wo ich mich befinde): 


```
cannot find transition for event 'registrateEvent' in state 'registrationPayment' of flow 'Participant registration Flow'
```

Weiß jemand was ich da dagegen machen kann, muss ich in jedem state alle events und nicht nur den state- eigenen Event deklarieren und definieren, wos hingeht wenn dieser event daherkommt oder gibt es da was besseres/anderes?

[XML]
<web-flow name="registration">

	<start-state state="registration"/>     <!-- start des flows -->

	<view-state id="registration" view="registration">
		<transition name="registrateEvent" to="registrationPayment"/>
	</view-state>

        <view-state id="registrationPayment" view="registrationPayment">
            <transition name="registrationPaymentEvent" to="registrationConfirmationData"/>
	</view-state>

        <view-state id="registrationConfirmationData" view="registrationConfirmationData">
                <transition name="registrationConfirmEvent" to="registrationClose"/>
	</view-state>

        <view-state id="registrationClose" view="registrationClose">
            <transition name="registrationCloseEvent" to="registrationEnd"/>
            <transition name="registrationNewEvent" to="registration"/>
	</view-state>

        <end-state id="registrationEnd" view="nachEndeSeite"/>

</web-flow>
[/XML]


----------



## Noctarius (27. Mrz 2011)

Du kannst den aktuellen state explizit im Formular angeben. Dann klappt auch das Aktualisieren. Normalerweise soll aber genau sowas von einer Statemaschine verhindert werden


----------



## Generic1 (27. Mrz 2011)

Noctarius hat gesagt.:


> Du kannst den aktuellen state explizit im Formular angeben. Dann klappt auch das Aktualisieren. Normalerweise soll aber genau sowas von einer Statemaschine verhindert werden



Da hätte ich noch 2 Fragen, Wie könnte ich das mit dem expliziten aktuellen state machen (wie würde da die Form aussehen) und was könnte ich sonst tun, um die Exception beim Drücken des Aktualisieren- Buttons zu vermeiden?
Vielen Dank,
lg


----------



## Noctarius (27. Mrz 2011)

Spring Web Flows: Back Button Handling _currentState im Form mitliefern (z.B. als Hidden Field)


----------



## Tobias (28. Mrz 2011)

BTW: Warum benutzt du die alte Implementierung von Ervacon? Die Doku hat doch eine End-of-Life-Notice. Stattdessen solltest du IMHO besser Spring Web Flow 2 Released; Introduces New Faces and JavaScript Modules | SpringSource.org nutzen!? Oder werfe ich jetzt zwei nicht zusammengehörige Frameworks durcheinander?


----------



## Generic1 (28. Mrz 2011)

Eine Frage hätte ich dann doch noch, wenn ich in meinem <end-state als view: 


```
<end-state id="myEndState" view="externalRedirect:/meineExterneJSP" />
```

verwende, dann bekomme ich ein HTTP 404 da Spring irgendwie "externalRedirect" nicht auflöst.
Weiß jemand was nich da falsch mache? Muss ich da noch irgendetwas in meine Flow- XML schreiben?
lg und besten Dank,


----------

