【问题标题】:Ajax Event rowToggle is not working inside composite componentAjax 事件 rowToggle 在复合组件内不起作用
【发布时间】:2013-11-01 08:42:15
【问题描述】:

我有 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.

你能建议我在这里做错了什么吗?

【问题讨论】:

  • 您确定您使用的是正确的 PrimeFaces 版本吗?
  • 是的,它是版本:3.5

标签: ajax jsf-2 primefaces


【解决方案1】:

对于复合组件中的 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}">

backing bean 中的方法可能如下所示:

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

希望有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 2016-09-23
    • 2010-12-30
    • 1970-01-01
    • 2019-01-26
    相关资源
    最近更新 更多