【发布时间】:2014-09-30 21:00:20
【问题描述】:
我尝试使用 PrimeFaces 3.1.1 更新数据表行,但它使所有值都为空。
public void onRowEdit(RowEditEvent event) {
Client us= (Client) event.getObject();
System.out.println("event edit"+us);
clientService.editClient( us );
FacesMessage msg = new FacesMessage("Client modifié", ((Client) event.getObject()).getName_customer());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
这是我的页面 xhtml:
<h:form>
<p:dataTable var="client" value="#{clientBean.clients}" widgetVar="clientTable" emptyMessage="No customers found with given criteria" filteredValue="#{clientBean.filteredClients}" paginator="true" rows="10" rowsPerPageTemplate="5,10,15" editable="true" id="testContainer">
<p:ajax event="rowEdit" update="@this" listener="#{clientBean.onRowEdit(event)}" />
<f:facet name="header"><p:outputPanel><h:outputText value="Recherche d'un client:" /> </p:outputPanel>
</f:facet>
<p:column filterBy="#{client.user.username}" headerText="Collaborateur" filterMatchMode="contains">
<h:outputText value="#{client.user.username}" />
</p:column>
<p:column filterBy="#{client.name_customer}" headerText="Nom" filterMatchMode="contains">
<f:facet name="output">
<h:link outcome="CustomerDetails?faces-redirect=true&includeViewParams=true" value="#{client.name_customer}" >
<f:param name="idCustomer" value="#{client.costumer_id}"></f:param>
<f:param name="nameCustomer" value="#{client.name_customer}"></f:param>
</h:link> </f:facet>
<f:facet name="input"><p:inputText value="#{client.name_customer}"/></f:facet>
</p:cellEditor>
</p:column>
<p:column filterBy="#{client.statut}" headerText="Statut" filterMatchMode="contains">
【问题讨论】:
-
这个监听器方法是被
rowEdit事件调用的吗?如何在<p:dataTable>中调用rowEdit事件? -
-
您的
Client模型中真的有name_customer属性吗?该名称不遵循一般命名约定。它应该看起来像nameCustomer(虽然它不应该是一个问题)。 -
是的,我的模型中有 name_customer 属性,在添加客户端的情况下没有问题
-
客户端对象是被修改的字段还是代表数据表中的一行?如果它代表一行,您可能需要查看 RowEditEvent.getObject().getSoure()
标签: jsf primefaces