6 Replies Latest reply on Apr 3, 2007 2:35 AM by Levent Aksu

    @DataModel does not create a component

    Levent Aksu Newbie

      Hi,
      I have a SFSB:

      /*
      package datassist.gop.action;
      
      import datassist.gop.domain.Istek;
      import datassist.gop.domain.Uzman;
      import java.io.Serializable;
      import java.util.List;
      import javax.ejb.Remove;
      import javax.ejb.Stateful;
      import javax.persistence.EntityManager;
      import javax.persistence.PersistenceContext;
      import javax.persistence.PersistenceContextType;
      import org.jboss.seam.ScopeType;
      import org.jboss.seam.annotations.Begin;
      import org.jboss.seam.annotations.Create;
      import org.jboss.seam.annotations.Destroy;
      import org.jboss.seam.annotations.End;
      import org.jboss.seam.annotations.Logger;
      import org.jboss.seam.annotations.Name;
      import org.jboss.seam.annotations.Scope;
      import org.jboss.seam.annotations.datamodel.DataModel;
      import org.jboss.seam.annotations.datamodel.DataModelSelection;
      import org.jboss.seam.log.Log;
      
      @Stateful
      @Name("isteklerAction")
      @Scope(ScopeType.SESSION)
      public class IsteklerAction implements Serializable, IsteklerActionLocal {
      
       @PersistenceContext(type=PersistenceContextType.EXTENDED)
       private EntityManager entityManager;
      
       public IsteklerAction() {
       }
      
       @Create
       public void init(){
       System.out.println("initing istekler. logger is "+((logger==null)?"null":"not null"));
       refresh();
       }
      
       @DataModel
       private List<Istek> isteklerList;
      
       public void refreshIstekler(){
       System.out.println("refreshing istekler");
       isteklerList=entityManager.createQuery("from Istek i").getResultList();
       for(Istek i:isteklerList){
       System.out.println("Istek: id="+i.getId()+" konu="+i.getKonu()+" acan="+i.getAcan().getAdSoyad());
       }
       }
      
       private List<Uzman> uzmanlar;
      
       private void refreshUzmanlar(){
       System.out.println("refreshing kullanicilar");
       uzmanlar=entityManager.createQuery("from Uzman u").getResultList();
       for(Uzman u:uzmanlar){
       System.out.println("Uzman: id="+u.getId()+" ad="+u.getAd());
       }
       }
      
       public void refresh() {
       refreshIstekler();
       refreshUzmanlar();
       }
      
       @DataModelSelection()
       private Istek istek;
      
       @Begin
       public void setIstek(Istek istek){
       System.out.println("Istek=");
       System.out.println("Istek: id="+istek.getId());
       System.out.println(" konu="+istek.getKonu());
       System.out.println(" acan="+istek.getAcan().getAdSoyad());
      
       this.istek=istek;
       entityManager.refresh(istek);
       }
      
       @Begin
       public void select(){
       System.out.println("Istek=");
       System.out.println("Istek: id="+istek.getId());
       System.out.println(" konu="+istek.getKonu());
       System.out.println(" acan="+istek.getAcan().getAdSoyad());
       }
      
       @End
       public void clear() {
       istek=null;
       }
      
       public List<Istek> getIsteklerList() {
       return isteklerList;
       }
      
       public void setIsteklerList(List<Istek> istekler) {
       this.isteklerList = istekler;
       }
      
       public List<Uzman> getUzmanlar() {
       return uzmanlar;
       }
      
       public void setUzmanlar(List<Uzman> uzmanlar) {
       this.uzmanlar = uzmanlar;
       }
      
       public void logSomething(){
       System.out.println("Trying to log something dummy and the logger is "+((logger==null)?"null":"not null"));
       }
      
       @Logger
       private Log logger;
      
       @Remove @Destroy
       public void destroy(){}
      
      }
      


      and I have the following in my page:
      
       <h:dataTable var="istek" value="#{isteklerlist}">
       <h:column>
       <f:facet name="header">No</f:facet>
       <s:link value="#{istek.id}" action="#{isteklerAction.setIstek(istek)}"/>
       </h:column>
       <h:column>
       <f:facet name="header">Tarih</f:facet>
       #{istek.acilis}
       </h:column>
       <h:column>
       <f:facet name="header">Konu</f:facet>
       #{istek.konu}
       </h:column>
       </h:dataTable>
      

      I cannot make the table to display the isteklerList. The table's header shows up but no data. I have verified to print that the data exists. I have a similar page in another app working but this one does not. In fact the DataModel component is not even created. I checked with the debug page to see that no component named "isteklerList" exists.
      What am I missing?