删除行表格Primefaces LazyDataModel

时间:2014-08-25 13:33:01

标签: jsf jsf-2 primefaces

我有一个日期列始终为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()方法。

0 个答案:

没有答案