JSF数据表根据选择填充行

时间:2013-01-01 06:00:52

标签: java jsf-2 primefaces

我在一个jsf页面中有两个数据表,两个都有两个不同的托管bean。

//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>

分别管理bean

//主表托管Bean

@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()是一种为两个托管bean填充LazyModel的方法

当我在master datatable中选择一行时,我能够在托管bean中为第一个数据表获取选定的行值EmployeeManagedBean

我的问题是,通过将第一个数据表的选定行值传递给第二个托管bean来填充第二个数据表,填充第二个数据表的最佳方法是什么?在第二个数据中显示值的触发点应该基于第一个数据表中行的选择。

任何帮助都非常值得赞赏。

由于

1 个答案:

答案 0 :(得分:3)

我是新手,但我尝试这样做:

  1. 将所选行传递给第二个bean(DepartmentManagedBean)
  2. 根据选定的行
  3. 采取部门
  4. 使用p:ajax属性 update
  5. 更新第二个数据表