1

我在一个 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 的方法

当我在主数据表中选择一行时,我可以在托管 bean 中为第一个数据表获取选定的行值,即EmployeeManagedBean

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

任何帮助都是非常可观的。

谢谢

4

1 回答 1

3

我对这一切都很陌生,但我尝试这样做:

  1. 将选定的行传递给第二个 bean (DepartmentManagedBean)
  2. 根据选定的行取部门
  3. 使用 p:ajax 属性更新更新第二个数据表
于 2013-01-02T15:50:53.303 回答