我有一个日期列始终为null的表。数据是LazyDataModel子级。我也有行编辑。
<p:dataTable id="dataTable" var="Var" value="#{tableBean.model}"
lazy="true"...........
<p:ajax event="rowEdit" listener="#{tableBean.onRowEdit}"
update=":dataTableForm:messages"/>
<p:column sortBy="VarName">
<f:facet name="header">
<h:outputText value="#{msg['Var.table.header.assignee']}"/>
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{Var.Name}"/>
</f:facet>
<f:facet name="input">
<h:inputText id="assigneeNameInput" styleClass="row-input" value="#{Var.Name}"/>
<p:message for="assigneeNameInput"/>
</f:facet>
</p:cellEditor>
</p:column>
<f:facet name="header">
<h:outputText value="#{msg['var.table.header.action']}"/>
</f:facet>
<p:rowEditor/>
</p:column>
如果填写了日期列,我需要删除已编辑的行。
我试试这个
public void onRowEdit(RowEditEvent event) {
Var updatedVar = (Var) event.getObject();
if (updatedVar.getReturnDate() != null) {
updatedVar = null;
}
}
这个
public void onRowEdit(RowEditEvent event) {
Var updatedVar = (Var) event.getObject();
if (updatedVar.getReturnDate() != null) {
((List<T>) getWrappedData()).remove(oldEntry);
}
}
两次尝试都不起作用,只有通过remoteCommand
两次更新表。建议决定。谢谢!
编辑:从lazydatamodel中删除了数据,但在页面上我仍然有更新的行。
编辑:JSF应用程序生命周期由六个阶段组成。
阶段4:更新模型值: 在JSF检查数据是否有效之后,它会遍历组件树并将相应的服务器端对象属性设置为组件的本地值。 JSF将更新与输入组件的value属性对应的bean属性。
第5阶段:调用应用: 在此阶段,JSF处理任何应用程序级事件,例如提交表单/链接到另一个页面。
因此,在dataTable更新后调用onRowEdit()方法。