1 Reply Latest reply on Jul 3, 2007 5:02 AM by pmuir

    [2.0 CVS]managed lists in SFSB can't be nulled out in conver

    ellenzhao

      One thing behaved strangely after I migrated my code to Seam 2.0 CVS. Say there is code like this:

      @Stateful
      @Scope(CONVERSATION)
      @Name("strange")
      public class StrangeBacking implements Serializable, Strange{
       @In EntityManager em;
       private List<Something> somethings;
      
       // getter and setter of somethings
      
       public void action1(){
       this.somethings = em.createQuery("...").getResultList();
       }
      
       public void action2(){
       this.somethings = null;
       }
      
       public void action3(){
       // the code does not touch the list somethings;
       }
      }
      
      


      In the test.xhtml, there's something like this:
      
      ...
      <h:commandButton action="#{strange.action1}", value="action 1", type="submit" />
      
      ...
      <h:commandButton action="#{strange.action2}", value="action 2", type="submit" />
      
      ...
      <s:button action="#{strange.action3}", value="action 3" />
      <h:form rendered="#{strange.somethings == null}">
      ...
      </h:form>
      


      Prior to the migration the form was successfully rendered after clicking the buttons in this sequence: action 1 --> action 2 --> action 3. But today it does not work. I used SeamTest to see if the list somethings was really nulled out in the method action2(), the test passed. But when I looked into the seam debug page, "somethings" always happily sat in the conversation context, not nulled out!?

      My current fix was like this:
      public void action2(){
       this.somethings.clear();
      }
      
      and in the test.xhtml:
      
      <h:form rendered="#{empty strange.somethings}">
      ...
      </h:form>
      


      Then the form got rendered. But I do not understand this. Why the list somethings in the conversation context cannot be nulled out but can be cleared out? Any enlightenment would be highly appreciated!

      Regards,
      Ellen