我正在使用Primefaces 5.2。我正在尝试编辑dataTable中的行。
这是我的xhtml:
<p:dataTable value="#{manageBean.punchList}" var="att" editable="true" id="detailsDataTable"
>
<p:columnGroup type="header">
<p:row>
<p:column headerText="In Time"/>
<p:column headerText="Action"/>
</p:row>
</p:columnGroup>
<p:ajax event="rowEdit" listener="#{manageBean.updateEdited(att)}" />
<p:ajax event="rowEditCancel" />
<p:column >
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{att.inTime}"/></f:facet>
<f:facet name="input"><p:inputText value="#{att.inTime}"/></f:facet>
</p:cellEditor>
</p:column>
<p:column >
<p:rowEditor id="editID">
<p:tooltip for="editID" value="Edit" />
</p:rowEditor>
</p:column>
</p:dataTable>
这是我的豆子:
public void updateEdited(Attend attObj)
{
logger.info("***************** updateEdited ***************** ");
}
当我点击编辑并更改值并更新时,方法不会被调用。
任何帮助??
答案 0 :(得分:4)
您需要更改rowEdit侦听器:
<p:ajax event="rowEdit" listener="#{manageBean.updateEdited}" />
在ManagedBean中,侦听器方法接收RowEditEvent:
public void updateEdited(RowEditEvent event) {
Attend myObject = (Attend) event.getObject();
}
答案 1 :(得分:1)
这是一个有效的例子。
XHTML文件:
<h:form>
<p:dataTable value="#{managedBean.myObj}" var="myObj editable="true">
<p:ajax event="rowEdit" listener="#{managedBean.onEdit}" update=":messages" />
<p:column style="width:30%" >
<h:outputText value="#{myObj.label}" />
</p:column>
<p:column style="width:50%" >
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{myObj.description}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{myObj.description}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column style="width:20%" >
<p:rowEditor />
</p:column>
</p:dataTable>
</h:form>
和managedBean:
public void onEdit(RowEditEvent event) throws ValidatorException {
MyObj myObj = (MyObj) event.getObject();
.....
.....
}