0
votes

i am trying to implement a primefaces data table with cell editing. Something similar to the one implemented here:

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

So here is my jsf datatable code:

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

And here is the code for my back bean:

@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);  
    }  
}

But when i try to load the view i get:

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

on line:

<p:ajax event="cellEdit" listener="#{syncCenterBean.onCellEdit}" update=":form:messages" />
1
i am using primefaces version 3.5thanili
There is a conflict of older jars in your application. See it on this link: forum.primefaces.org/viewtopic.php?f=3&t=28450hugohasth

1 Answers

0
votes

You should make your datatable editable for this event

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