0 Replies Latest reply on May 13, 2009 5:03 PM by Philippe Deslauriers

    What happens to the PAGE scope when using EJB components?

    Philippe Deslauriers Newbie

      I have worked extensively with seam using POJO components and I am now trying to switch to EJB components.

      Imagine this : a page with a list of dogs, and a edit page to modify the selected dog. When you go back to the list of dog, the list is reloaded. The conversation is long running is only when actually editing a dog.

      Can anyone help me : is there a easy way to have a @DataModel list which gets loaded only once, whitout having a long running conversion?

      See code below…

      The problem with the code below is that even if the « dogs » is outjected in the scope page, the « dogs » will be null at next request because the component will re-init as the conversation is not long running. So the factory will be called again.

      It’s also impossible to re-inject the « dogs », because when @DataModel outjects « dogs » in the page scope , it will also « magically » transform the List into a DataModelList….which is ok.

      Is there anything wrong with what I try to do? Here’s how I see it…

      1. There’s no (good) reason why the list of dog should be in a long running conversation.

      2. I just can’t see SQL running twice uselessly without having a panic attack.

      public class DogManager {
         @DataModel(scope = ScopeType.PAGE)
         private List<Dog>      dogs;
         @Out(required=false, Scope=ScopeType.CONVERSATION)
         private Dog            dog;
         EntityManager           em;
         @Factory(value = "dogs")
         public void initDogs() {
            dogs = (List<Dog>) em.createQuery("SELECT DISTINCT d FROM Dog d  ").getResultList();
         public void edit(){
         public void save(){
         public void cancel(){