我有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.
你能说出我在这里做错了吗?
答案 0 :(得分: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());
}
希望有所帮助:)