【问题标题】:JSF datatable populate rows based on selectionJSF 数据表根据选择填充行
【发布时间】:2013-01-01 06:00:52
【问题描述】:

我在一个 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 并因此填充第二个数据表来填充第二个数据表的最佳方法是什么?在第二个数据表中显示值的触发点应该基于在第一个数据表中选择一行。

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

谢谢

【问题讨论】:

    标签: java jsf-2 primefaces


    【解决方案1】:

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

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

    【讨论】:

    • Darka,您的回答,尤其是第 3 点,几乎解决了我的问题。一些工作仍然存在,然后我可以确认我的表格是否有效。谢谢
    • 非常感谢,我的主从表单正在工作,但仍需要进行一些调整。赞赏。
    • 太好了,我能帮上忙 :)
    猜你喜欢
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多