2013-11-01 23 views
0

我有我想添加ajax event =「rowToggle」的dataTable的複合組件。我嘗試了以下選項:Ajax事件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

您確定您使用的是正確的PrimeFaces版本嗎? – yannicuLar

+0

是的,它是版本:3.5 –

回答

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}"> 

的Mthod你的後盾內豆可能看起來像這樣:

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

希望幫助:)