我有一个问题:当我尝试编辑单元格时,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的字段时,它起作用了。