2013-01-01 36 views
1

我在一個jsf頁面中有兩個數據表,並且兩個數據表都有兩個不同的託管bean。JSF數據表基於選擇填充行

//master table 
<p:dataTable id="dataTable" var="req" lazy="true" 
      value="#{emp.lazyModel}" paginator="true" rows="10" 
      selection="#{emp.selectedRequest}">   
      <p:ajax event="rowSelectRadio" listener="#{emp.onRowSelect}" /> 
      <p:column selectionMode="> 
       <h:outputText value="#{req.empNo}" /> 
      </p:column> 



// detail table 
<p:dataTable id="Det" var="det" lazy="true" 
      value="#{dept.lazyModel}" paginator="true" rows="1"> 

      <p:column> 
       <f:facet name="header"> 
        <h:outputText value="DeptNo" /> 
       </f:facet> 
       <h:outputText value="#{det.deptNo}" /> 
      </p:column> 

託管豆分別

//主表管理豆

@Named("emp") 
@ViewAccessScoped 
public class EmployeeManagedBean implements Serializable { 

@PostConstruct 
    public void init() { 
     initTable(); 
    } 

//詳細表所管理的Bean

@Named("dept") 
@ViewAccessScoped 
public class DepartmentManagedBean implements Serializable { 

@PostConstruct 
    public void init() { 
     initTable(); 
    } 

initTable()是填充LazyModel兩者管理的方法豆類

當我選擇在主數據表中的行,我能在第一個數據表管理的Bean是EmployeeManagedBean

我的問題是什麼是通過將選定填充第二數據表,最好的辦法來獲得選擇行值第一個數據表的第二個託管bean的值,從而填充第二個數據表?在第二個datable中顯示值的觸發點應該基於在第一個datatable中選擇一行。

任何幫助是非常可觀的。

感謝

回答

3

我新的這一切,但我嘗試做這樣的:

  1. 通選擇行至第二個bean(DepartmentManagedBean)
  2. 根據所選行
  3. 了部門更新第二個數據表,使用p:ajax屬性更新
+0

Darka,你的回答尤其是第3點幾乎解決了我的問題。有些工作仍然存在,那麼我可以確認我的表單是否工作。謝謝 – user75ponic

+0

非常感謝,我的主細節表單正在工作,仍然需要做一些調整。讚賞。 – user75ponic

+1

太棒了,我可以幫助:) – Darka