1

1つのjsfページに2つのデータテーブルがあり、両方に2つの異なるマネージド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

私の質問は、最初のデータテーブルの選択された行の値を2番目のマネージドBeanに渡して、2番目のデータテーブルにデータを入力することにより、2番目のデータテーブルにデータを入力するための最良のアプローチは何ですか?2番目のデータブルに値を表示するためのトリガーポイントは、最初のデータテーブルの行の選択に基づいている必要があります。

どんな助けでも非常に高く評価されます。

ありがとう

4

1 に答える 1

3

私はこれに慣れていませんが、次のようにしてみます:

  1. 選択した行を 2 番目の Bean (DepartmentManagedBean) に渡します
  2. 選択した行に従って部門を取得しました
  3. p:ajax属性更新を使用して、2番目のデータテーブルを更新します
于 2013-01-02T15:50:53.303 に答える