1
votes

I have datatable with celledit, the ajax event does not fire on cell edit. The event listener does not get called.Thanks.

<ui:define name="content">
    <h:form prependId="false" id="tForm">
        <p:datatable id="dTable" value="#{bean.tData}" var="data"
            editable="true" editMode="cell">
            <p:ajax event="cellEdit" listener="#{bean.updateData(data)}" />
            <p:column>
                <p:cellEditor>
                    <f:facet name="output">
                        <h:outputText value="#{data.name}"></h:outputText>
                    </f:facet>
                    <f:facet name="input">
                        <p:inputText value="#{data.name}"></p:inputText>
                    </f:facet>
                </p:cellEditor>
            </p:column>
        </p:datatable>
    </h:form>
</ui:define>

bean listener method

public void updateData(Data d){
    logger.debug(d.getName());
}
1
The listener method signature should match public void updateData(org.primefaces.event.CellEditEvent event) according to the specification. You can access the data object from the event object passed.Srikanth Ganji
I tried that as well, the event method is not being called.user3154305
try adding process="@this" and check it. But method signature should b e as I specified according to the specification.Srikanth Ganji
@user3154305 - check your javascript console for validation/conversion/javascript errorskolossus

1 Answers

1
votes

I think you should use this instead:

  <p:ajax event="cellEdit" listener="#{bean.updateData}" />

    public void updateData(CellEditEvent event) {   
    Object newValue = event.getNewValue();  
    logger.debug(newValue.toString());
    }