Zeile in einer PrimeFaces-Datentabelle löschen

Ich benutze PrimeFaces 3.5 und implementiere dasDataTable - Kontextmenü Komponente. Ich möchte jedoch eine Zeile löschen, indem ich auf eine Zelle in der Zeile klicke.

Meine JSF Seite:

<h:form id="form">

    <p:growl id="messages" showDetail="true" />

    <p:contextMenu for="productID" widgetVar="cMenu">
        <p:menuitem value="Edit Cell" icon="ui-icon-search"
                    onclick="productService.showCellEditor();return false;" />
        <p:menuitem value="Delete Row" icon="ui-icon-search"
                    onclick="productService.delete();return false;" />
    </p:contextMenu>

    <p:dataTable id="productID" var="product"
                 value="#{productService.getListOrderedByDate()}"
                 editable="true" editMode="cell" widgetVar="productTable"
                 paginator="true" rows="10"
                 paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                 rowsPerPageTemplate="5,10,15">

        <f:facet name="header"> Airbnb Product  </f:facet>

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

        <p:column headerText="id" style="width:15%">
            <p:cellEditor>
                <f:facet name="output">
                    <h:outputText value="#{product.id}" />
                </f:facet>
                <f:facet name="input">
                    <p:inputText value="#{product.id}" style="width:96%" />
                </f:facet>
            </p:cellEditor>
        ...
        </p:column>
    </p:dataTable>
</h:form>

Ich habe in meinem Dienst eine Löschmethode implementiert, die funktionieren sollte. Wenn ich jedoch in meinem Kontextmenü die Schaltfläche Löschen drücke, geschieht nichts. Woran könnte das Problem liegen?

AKTUALISIEREN

Ich habe es gerne auf der PF Seite gemacht mit:

public void delete() {
    log.info("Deleting data:");
    log.info(selectedRow.getId());
//  productDAO.delete(selectedRow);

}

und mein datatable:

                <p:contextMenu for="productID" widgetVar="cMenu">
                    <p:menuitem value="Edit Cell" icon="ui-icon-search"
                        onclick="productService.showCellEditor();return false;" />
                    <p:menuitem value="Delete" update="productID" icon="ui-icon-close"
                        actionListener="#{productService.delete}" />
                </p:contextMenu>

                <p:dataTable id="productID" var="product"
                    value="#{productService.getListOrderedByDate()}"
                    editable="true" editMode="cell" widgetVar="productTable"
                    paginator="true" rows="10"
                    paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                    rowsPerPageTemplate="5,10,15"
                    selection="#{productService.selectedRow}" selectionMode="single" rowKey="#{product.id}">

Wenn ich jedoch die ID aus der ausgewählten Zeile erhalten möchte, erhalte ich eineNullPointerException. Ich weiß deine Antwort wirklich zu schätzen !!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage