Results 1 to 7 of 7

Thread: ${flowExecutionKey}

  1. #1
    Join Date
    Mar 2006
    Posts
    21

    Default ${flowExecutionKey}

    I've seen the following line all over the places in the webflow examples

    <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}">

    However, I couldn't find where and how the ${flowExecutionKey} is initially set in the context. I try to apply phonebook workflow into my application and i keep getting the following error:

    org.springframework.webflow.executor.support.FlowE xecutorArgumentExtractionException: Unable to extract the flow execution key parameter: make sure the client provides the '_flowExecutionKey' parameter as input; the parameters provided in this request are: map['_eventId_search' -> 'Search', '_flowExecutionKey' -> '', 'sysName' -> '', 'bookName' -> '', '_flowId' -> 'book-search-flow']
    org.springframework.webflow.executor.support.Reque stParameterFlowExecutorArgumentHandler.extractFlow ExecutionKey(RequestParameterFlowExecutorArgumentH andler.java:98)
    org.springframework.webflow.executor.support.FlowR equestHandler.handleFlowRequest(FlowRequestHandler .java:112)
    org.springframework.webflow.executor.mvc.FlowContr oller.handleRequestInternal(FlowController.java:17 0)
    com.jpm.cristal.adminweb.mvc.controller.BookFlowCo ntroller.handleRequestInternal(BookFlowController. java:15)
    org.springframework.web.servlet.mvc.AbstractContro ller.handleRequest(AbstractController.java:153)
    org.springframework.web.servlet.mvc.SimpleControll erHandlerAdapter.handle(SimpleControllerHandlerAda pter.java:45)
    org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:806)
    org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:736)
    org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:396)
    org.springframework.web.servlet.FrameworkServlet.d oPost(FrameworkServlet.java:360)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:802)

    However, the flowExecutionKey value must be of the format _c<conversationId>_k<continuationId>. It looks like it's generated by within the framework. But my jsp page just evaluate the ${flowExecutionKey} as empty string "".

    Did I miss anything? Thanks for any hint on this.

  2. #2
    Join Date
    Sep 2004
    Location
    Leuven, Belgium
    Posts
    1,853

    Default

    Strange. SWF will automatically add the flowExecutionKey to the model that is exposed to the view. In the case of a JSP the view model is put in the request attributes so ${flowExecutionKey} just outputs the value of that request attribute. You don't need to do anything to get the flowExecutionKey exposed to the JSP, it's all done automatically for you.

    What Servlet engine are you using? Have you tried deploying the phonebook sample? Does that work for you?

    Erwin

  3. #3
    Join Date
    Mar 2006
    Posts
    21

    Default

    Erwin, thanks for the resply.

    In fact, I didn't deploy the phonebook sample to run it. What I did was to follow the search flow in the phonebook code and make some adjustments pertaining to my situation.

    My jsp page is laid out by tiles. and I subclassed the FlowController class in such a way that I can reset the view name of the ModelAndView in handleRequestInternal() method, like this:

    public class BookFlowController extends FlowController {
    private String viewName;

    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
    ModelAndView mav = super.handleRequestInternal(request, response);
    mav.setViewName(viewName);
    mav.addObject("bookInfo", new BookInfo());
    return mav;
    }

    public String getViewName() {
    return viewName;
    }

    public void setViewName(String viewName) {
    this.viewName = viewName;
    }
    }

    I even tried to print out the value from request.getAttribute("flowExecutionEvent") and "_flowExecutionEvent" both got me null values.

    Please give me more advise. In addition, how do I enable the "debug" mode to see the detailed messages from webflow?

    Thanks.

  4. #4
    Join Date
    Mar 2006
    Posts
    21

    Default

    PS, I am running Tomcat5.5 and Java1.5 + springframework2.0 and webflow1.0

  5. #5
    Join Date
    Mar 2006
    Posts
    21

    Default

    Never mind. I have found what I did wrong.

    I was so new to the webflow that I didn't adapt quickly enough the underlying logic of the flow definition. I shouldn't have subclassed the FlowController as mentioned above, where it's smart enough to figure out what corret view to use as long as I configure this properly in the flow xml.

    I have just gone over this hurdle and be able to proceed for the next one.

    Thanks.

  6. #6
    Join Date
    Sep 2004
    Location
    Leuven, Belgium
    Posts
    1,853

    Default

    Great!

    SWF uses commons logging to output log messages. Commons logging delegates to log4j if found on the classpath, or to JDK logging otherwise. So you just have to configure the "org.springframework.webflow" category to DEBUG level using either log4j or JDK logging configuration. Check which logging system you're using and the documentation of it to find out more.

    Erwin

  7. #7

    Default

    I am having the same exception, but I didn't extend the FlowController. I configure the class in the flow.xml like this:

    <bean id="portletModeControllerMapping"
    class="org.springframework.web.portlet.handler.Por tletModeHandlerMapping">
    <property name="portletModeMap">
    <map>
    <entry key="view" value-ref="flowController" />
    </map>
    </property>
    </bean>

    What could be the problem?
    Thanks.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •