2013-04-15 107 views
0

我試圖通過單元格編輯來實現primefaces數據表。實施類似的東西到一個位置:事件:cellEdit不支持primefaces數據表格單元格編輯

http://www.primefaces.org/showcase/ui/datatableCellEditing.jsf

因此,這裏是我的JSF數據表代碼:

<h:form> 
<p:growl id="messages" showDetail="true"/> 
<p:panel id="dataPanel">     
    <p:dataTable 
    id="imagesDataTable" 
    var="cRImageData" 
    value="#{syncCenterBean.cRImageDataList}" 
    widgetVar="imagesTable" 
    paginator="true" 
    sortMode="multiple" 
    rows="10" 
    paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
    rowsPerPageTemplate="10,15,20,30" 
    paginatorAlwaysVisible="false" 
      editable="true" 
      editMode="cell"> 

     <p:ajax event="cellEdit" listener="#{syncCenterBean.onCellEdit}" update=":form:messages" /> 
     <p:column sortBy="#{cRImageData.imId}" headerText="ID" style="width:100px;text-align:center;"> 
      <h:outputText value="#{cRImageData.imId}" /> 
     </p:column> 

     <p:column headerText="Image Name" style="width:180px;text-align:center;"> 
      <h:outputText value="#{cRImageData.imName}" /> 
     </p:column> 

     <p:column headerText="Image Type" style="width:170px;text-align:center;"> 
      <p:cellEditor> 
       <f:facet name="output"> 
        <h:outputText value="#{cRImageData.imType}" /> 
       </f:facet> 
       <f:facet name="input"> 
        <h:selectOneMenu value="#{syncCenterBean.cRImageTypeList}" style="width:100%"> 
         <f:selectItems value="#{syncCenterBean.cRImageTypeList}" var="imTypeId" itemLabel="#{imTypeId}" itemValue="#{imTypeId}" /> 
        </h:selectOneMenu> 
       </f:facet> 
      </p:cellEditor> 
     </p:column> 
     ... 

這裏是我的背部豆代碼:

@ManagedBean(name = "syncCenterBean") 
@RequestScoped 
public class SyncCenterBean implements Serializable { 

    .... 

    List<CRImageData> cRImageDataList; 
    List<CRImageType> cRImageTypeList; 

    @SuppressWarnings("unchecked") 
    public SyncCenterBean(){ 

     cRImageTypeList = getImageTypesDB(); //returns a populated list of objects 
     cRImageDataList = getImageDataDB(); //returns a populated list of objects 
    } 
    ... 
    public void onCellEdit(CellEditEvent event) { 
    Object oldValue = event.getOldValue(); 
    Object newValue = event.getNewValue(); 

    if(newValue != null && !newValue.equals(oldValue)) { 
     FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cell Changed", "Old: " + oldValue + ", New:" + newValue); 
     FacesContext.getCurrentInstance().addMessage(null, msg); 
    } 
} 

但當我嘗試加載我得到的視圖時:

Caused by: javax.faces.view.facelets.TagException: .... Event:cellEdit is not supported. 

在線:

<p:ajax event="cellEdit" listener="#{syncCenterBean.onCellEdit}" update=":form:messages" /> 
+0

我使用primefaces 3.5版 – thanili

+0

有更古老的罐子在您的應用程序衝突。 請通過以下鏈接查看: http://forum.primefaces.org/viewtopic.php?f=3&t=28450 – hugohasth

回答

0

你應該讓你的數據表可編輯此事件

<p:datatable editable="true" editMode="cell" /> 
+0

但是錯誤仍然存​​在! – thanili

相關問題