我有一个问题:当我尝试编辑单元格时,oldValue和newValue中为null。这是XHTML的代码:

<h:form id="tabela">
     <p:contextMenu for="tabelaPrzypomnien" widgetVar="cMenu">
        <p:menuitem value="Edit Cell" icon="ui-icon-search" onclick="PF('carsTable').showCellEditor();return false;"/>
        <p:menuitem value="Hide Menu" icon="ui-icon-close" onclick="PF('cMenu').hide()"/>
    </p:contextMenu>
 <p:dataTable id="tabelaPrzypomnien" value="#{obslugaUzytkownikow.listaZadan}" var="zadania" rows="10" rowsPerPageTemplate="5,10,15"
                 paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                 paginator="true" lazy="true" editable="true" editMode="cell" widgetVar="carsTable">
<f:facet name="header">
            In-Cell Editing
        </f:facet>

    <p:ajax event="cellEdit" listener="#{obslugaZadan.onCellEdit}"/>
        <p:column headerText="id grupy">
            <h:outputText value="#{zadania.id_grupy}" />
        </p:column>

        <p:column headerText="Temat" sortBy="temat">
               <p:cellEditor>
                   <f:facet name="output">
                        <h:outputText value="#{zadania.temat}" />
                   </f:facet>
                   <f:facet name="input">
                        <p:inputText value="#{zadania.temat}" style="width:96%" />
                   </f:facet>
               </p:cellEditor>
        </p:column>

        <p:column headerText="Deadline" sortBy="deadline">
            <h:outputText value="#{zadania.deadline}" />
        </p:column>

    </p:dataTable>


和ObslugaZadan Bean,onCellEdit方法:

public void onCellEdit(CellEditEvent event)
     {
            Object oldValue = event.getOldValue();
            Object newValue = event.getNewValue();

            System.out.println(oldValue + " i druga: " + newValue + "    event: " + (String) event.getColumn().getHeaderText());

            if(newValue != null && !newValue.equals(oldValue))
            {
                System.out.println("rsedtcyfvubi" + oldValue + " i druga: " + newValue);
            }
        }


更新后的控制台信息:INFO:空i druga:空事件:Temat

因此:var事件不为null,但oldValue和newValue为null,我不知道为什么!请帮忙!
顺便说一句,我有PF 4.0,Eclipse Kepler和GlassFish 4.0。我已经受够了...

最佳答案

我只是解决了同样的问题,这是因为我的DataTable.value绑定到了ManagedBean.getList()之类的函数,而不是绑定到ManagedBean的字段。

当我将DataTable.value更改为绑定到ManagedBean的字段时,它起作用了。

10-08 08:00