0

ajax event="rowToggle" を追加したい dataTable の複合コンポーネントがあります。以下のオプションを試しました:

<cc:interface>
        <cc:attribute name="rows" />
        <cc:attribute name="value"
            type="org.primefaces.model.LazyDataModel" />
        <cc:attribute name="var" />
        <cc:attribute name="id" />
        <cc:attribute name="rowStyle" required="false"/>
        <cc:attribute name="ajaxEvent" required="false" />
    </cc:interface>

    <cc:implementation>
        <p:dataTable value="#{cc.attrs.value}"
            rendered="#{not empty cc.attrs.value}" id="#{cc.attrs.id}"
            paginator="true" rows="25" 
            currentPageReportTemplate="Showing {startRecord}-{endRecord} of {totalRecords}"
            paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
            rowsPerPageTemplate="25,50,100" paginatorPosition="bottom"
            lazy="true" rowStyleClass="#{cc.attrs.rowStyle}">
             <p:ajax event="#{cc.attrs.ajaxEvent}" global="false" />
             <c:set target="#{component}" property="var" value="#{cc.attrs.var}"/>
            <cc:insertChildren />
        </p:dataTable>
    </cc:implementation>

そして、メインページから、私は呼び出しています:

<t:lazydatatable var="changeSummary"
                        value="#{changeLogInspectorBean.changeLogInsertModel}" rows="25"
                        id="change_overview_insert" ajaxEvent="rowToggle">

以下のエラー メッセージで失敗しています。

<p:ajax> Event:#{cc.attrs.ajaxEvent} is not supported.

私がここで何をしているのか教えてもらえますか?

4

1 に答える 1

0

複合コンポーネントでの ajax イベント呼び出しについては、テーブルで適切なイベントを定義する必要があります。

次のように属性を宣言してみてください。

<cc:attribute name="rowToggleListener" required="false" />

そして、データテーブル内の実際の呼び出しは次のようになります。

<p:ajax event="rowToggle"  listener="#{cc.attrs.rowToggleListener}"/>

コンポーネントの場合:

<t:lazydatatable var="changeSummary"
                 value="#{changeLogInspectorBean.changeLogInsertModel}" 
                 rows="25" id="change_overview_insert" 
                 ajaxEvent="#{yourBackingBean.onRowToggle}">

バッキング Bean 内の Mthod は次のようになります。

public void onRowToggle(RowToggleEvent evt){
    MytoggledRowObject rowObject = ((MytoggledRowObject) event.getData());
}

お役に立てば幸いです:)

于 2014-01-30T07:57:36.123 に答える