0 Replies Latest reply on Oct 20, 2008 10:59 AM by v.masterov

    Removing variable from context and nested conversation

    v.masterov

      My trouble is that I need to refresh the list when I return from nested conversation into parent conversation context, and I cannot find the way to do it. I try the following. .

      I have Factory-bean(DataTableFactory), Home-bean(MovieHome) and two pages(page1.xhtml and page2.xhtml).
      My DataTableFactory class have factory method:


      @Factory("movies", scope = ScopeType.CONVERSATION)
      public List<Movie> getMovies() {
          return em.createQuery("select movie from Movie movie").getResultList();
      }


      page1.xhtml contains

      <h:dataTable var="item" value="#{movies}">

      i.e. when page1.xhtml is rendered movies is put into conversationContext. Also page1.xhtml contains
      <s:link value="Create new movie" action="#{home.movie.beforeNew}"/>


      When I click this link beforeMethod is called in MovieHome class:


      @Name("home.movie")
      public class MovieHome extends EntityHome<Movie> {
      ...
          public void beforeNew() {
              clearInstance();
              info("conversation.id = #{conversation.id}, movies = #0", Contexts.getConversationContext().get("movies"));
              Contexts.getConversationContext().remove("movies");
              info("movies = #0", Contexts.getConversationContext().get("movies"));
              Conversation.instance().beginNested();
              return "/page2.xhtml";
          }
      ...
      }
      


      and I get the following log:

      conversation.id = 6, movies (before remove) = [Movie(...) ...]

      movies (after remove) = null

      Later, when page2.xhtml is rendered I have nested conversation with number 8. On debug.seam page I select parent conversation (with number 6) and see than movies remained in context !

      Of course when I return to page.xhtml the value of the movies variable remained in the parent context and the list is not refreshed (-:
      But if I do not start the nested conversation, movies is removed from context.