0 Replies Latest reply on Jun 1, 2009 9:58 PM by Amit Bafna

    Nested conversation and flush mode

    Amit Bafna Newbie


      I have a screen where I display all the users and few of the user properties that can be edited dynamically on this screen. User (webadmin) can press add user button on the top to add a new user or click on username to edit additional properties not available on user list screen. User add/edit screen performs validations before persisting or updating.

      When users presses add button or clicks on username to edit a user, I am nesting the conversation and redirecting webadmin to user add/update screen. User add/update screen is backed by a user entity home component. After all the checks, I am persisting / updating the data and ending the nested conversation.

      Since, a few validations need to be performed on user screen before user properties can be updated, I need the flush mode to be manual. However, on user list screen, I need flush mode to be auto to allow for dynamic updates for available properties.

      Please see the code snippet below. It is not working as expected. How can I switch the flush mode to MANUAL when nesting the conversation and back to AUTO when ending the nested conversation without using @Begin in my Java code?

      I tried @Begin(nested=true, flushMode=FlushModeType.MANUAL) on the first method being called on entity home component and it worked as expected but I want to keep navigation controls out of Java code. Is this possible?


      <s:button id="addUserButton" value="Add User" view="/userAccount.xhtml" propagation="nest">
          <f:param name="userId"/>
          <f:param name="fromView" value="userList" />


      <page view-id="/userList.xhtml" login-required="true">
          <begin-conversation join="true"/>
          <description>Conv #{conversation.id} @ #{currentTime} - User List</description>
      <page view-id="/userAccount.xhtml" login-required="true" action="#{userHome.checkData}">
          <begin-conversation nested="true" flush-mode="manual"/>
          <description>Conv #{conversation.id} @ #{currentTime} - Add/edit user</description>
          <param name="userId" value="#{userHome.id}" converterId="javax.faces.Long" />
          <param name="fromView"/>
              <rule if-outcome="invalid">
                  <end-conversation before-redirect="true"/>
                  <redirect view-id="/error.xhtml" />
              <rule if-outcome="success">
                  <end-conversation before-redirect="true"/>
                  <redirect view-id="/#{empty fromView ? 'mySavedReports' : fromView}.xhtml" />

      Any one any suggestions?