0 Replies Latest reply on Jun 20, 2011 2:54 PM by Brendan Healey

    No conversation found after conversation.end() - surprise

    Brendan Healey Master
      I'm trying to migrate a JSF 2/Glassfish 3.1 app from JSF managed beans to using CDI. The first
      problem was the rather surprising lack of a view scope in Weld. I looked at RenderScoped in Seam
      3 but unfortunately had all kinds of problems, presumably due to the known issues with Seam 3/Glassfish 3.1. Also seam-faces won't allow mixing managed beans and CDI beans so there's no
      phased migration possible, no doubt for good reasons.

      I need view scope or the ajaxified PrimeFaces components won't work, and I've now got Steven
      Verborgh's ViewScoped implementation working. The man deserves a medal.

      Now for my question, as a test I've got 2 @ViewScoped beans and I'd like to use a conversation
      scoped bean to pass parameters between 2 pages (I've found it least confusing to always have a
      backing bean per page). In the JSF managed bean environment I've been using view parameters
      which can be laborious to use in certain circumstances.

      So what I've done is define a TransferBean which is @Conversation Scoped and I @Inject this into
      both the @ViewScoped beans. Just prior to navigating from one page to the other I call
      transferBean.getConversation.begin(), copy the necessary data into the instance and navigate to
      the next page. In the preRenderView listener for the next page I setup a reference to the
      "parameter" data in the transfer bean from the view scoped bean and end the conversation, as it's
      no longer required.

      This actually works, but the first problem I've encountered is that the next page is showing as
      ...next.xhtml?cid=1 in the browser (I used faces-redirect=true), but as I ended the conversation
      in the preRenderView if the user hits browser refresh they get a 'no conversation found to restore'
      error.

      Is there anything I can to do to avoid this error? I had a look through the FAQ, KB and searched
      the forums but couldn't see anything that seemed to match.

      Thanks for any help.

      Brendan.