@DataModel does not create a component
laksu Apr 1, 2007 5:03 PMHi,
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?