Simple Seam Question...
edwar64896 Mar 6, 2006 8:01 PMHi.
I am a newbie at Seam so please forgive what might seem to be an obvious question...
I'm trying to implement some hierarchy navigation screens. Code is posted below:
home.xhtml
...
 <div class="chierarchy">
 <h:dataTable value="#{categories}" var="cat">
 <h:column>
 <h:commandLink value="#{cat.name}" action="#{catList.select}" />
 </h:column>
 </h:dataTable>
 </div>
...
CategoryListBean.java
...
@Stateful
@Scope(SESSION)
@Name("catList")
@Interceptors(SeamInterceptor.class)
public class CategoryListBean implements java.io.Serializable, CategoryList {
 @DataModel
 private List<Category> categories;
 @Out(required=false)
 @DataModelSelection
 private Category category;
 @PersistenceContext(type=EXTENDED)
 private EntityManager em;
 @Factory("categories")
 public void findCategoryList() {
 long catId=1;
 try {
 catId=category.getCategoryId();
 } catch (Exception e) {}
 System.out.println(catId);
 categories = em.createQuery("from Category where parent_id = :parid")
 .setParameter("parid",catId)
 .getResultList();
 }
 public String select() {
 return "selected";
 }
 public String delete() {
 return "deleted";
 }
 @Remove @Destroy
 public void destroy () {}
}
...
Category.java
...
@Entity
@Name("category")
public class Category implements java.io.Serializable {
 private long categoryId;
 private Collection<Asset> asset;
 private Collection<Category> children;
 private Category parent;
 private String name;
 public Category() {}
...
 /**
 * Get children.
 *
 * @return children as String.
 */
 @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER, mappedBy="parent")
 public Collection<Category> getChildren()
 {
 return children;
 }
...
When a dataTable entry is selected in the browser, I am assuming that the selected "Category" will be passed in as the @DataModelSelection attribute and that the next time the table is rendered, the parent cateory will have changed. Unfortunately, this doesn't happen. I don't seem to get the expected behaviour and the page re-renders as before. Seeing as this is such a trivial problem, I would be grateful if someone could set me straight here.
Thanks.
Mark
 
     
     
    