0

我有 dataTable 的复合组件,我想在其中添加 ajax event="rowToggle"。我尝试了以下选项:

<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 回答