|
[
Permalink
| « Hide
]
Nick Rountree added a comment - 06/Nov/08 09:07 PM
Note that the SWF code excerpts above are back-to-front.
Nick. This was a tough call for us, and one I went back and forth on. I would definitely prefer *not* to introduce such changes in point releases, but we felt that the existing behavior was not ideal . We ultimately considered the previous 2.0.x behavior a bug / gap since it could simply not support nested flow paths, for example: /air/booking and /hotel/booking would simply both map to flow id 'booking' then, which obviously breaks down.
Separately, mapping flows to URLs manually resulted in too much redundancy in configuration. We sought to address this in the 2.0.x scope from the outset--we introduced FlowHandlerAdapter in 2.0.0 with the goal to address this but unfortunately didn't complete the job until FlowHandlerMapping was introduced in 2.0.4 [which is now recommended as a superior alternative to the old FlowController]. We also considered going to 2.1 with this change, but in the end decided it was best to complete 2.0.x and classify this as "closing the last gap" in Web Flow 2.0.x. We were expecting the production using nested URL paths to their flows to be fairly small at this point, versus the number invoking flows at top-level URLs e.g. /login, which would not be effected by this change. We may have underestimated that. How are you working around this issue? More insight and suggestions from your side is appreciated. Will document compatibility issue in 2.0.5 and note how to restore earlier 2.0.x behavior.
Considering adding "useFullRequestPathAsFlowId" property to DefaultFlowUrlHandler, with value=false when used with FlowController and value=true for FlowHandlerAdapter/FlowHandlerMapping. Since it is expected most existing web flow applications use the FlowController, this will have the positive benefit of not breaking them. Those using the handlermapping/adapter can set the flag to false explicitly if they need the old behavior. Sound acceptable?
Introduced org.springframework.webflow.context.servlet.FilenameFlowUrlHandler that is the default implementation of the FlowController. This implementation handles all the URL like Web Flow 2.0.3 does.
Web Flow 2.0.3 users will not be affected by the URL change if using the FlowController. |
||||||||||||||||||||||||||||||||||||||||||||||||||||