2

我有一个包含两列表格的表格。每行都有一个复选框和一个输入字段。复选框用于删除特定行,而输入字段用于(大量)编辑值。每个输入字段都使用 bean 验证。此外,我有两个按钮:一个用于“删除”,一个用于“保存”。一切都基于primefaces。

<h:form>
    <p:dataTable value="#{backingBean.list}" var="entry" id="table">
        <p:column>
            <p:selectBooleanCheckbox value="#{entry.flagDelete}" />
        </p:column>

        <p:column>
            <p:inputText value="#{entry.value}" />
        </p:column>
    </p:dataTable>

    <p:commandButton value="save" actionListener="#{backingBean.save}" process="table @this" update="table" />

    <p:commandButton value="delete" actionListener="#{backingBean.delete}" process="@([type=checkbox]) @this" update="table" />
</h:form>

(在 JSF 2 中,“process”等于“execute”,“update”等于“render”)

现在应该可以在不验证输入字段的情况下删除选定的行。因此,我使用了 primfaces ajax 选择器(基于 jQuery 选择器 API)来仅选择应在 ajax 请求期间处理的复选框。输入字段的值仍会发送到服务器,但不会被处理。

问题是在 ajax 请求之后重新渲染表。我希望输入字段保留在单击删除按钮之前输入的值(以防用户没有使用保存按钮保存更改)。由于这些值被发送到服务器,这应该不是什么大问题(例如,当验证失败时,我也会得到最后输入的值)。但实际上我得到了存储在支持 bean 中的值。有没有关于如何实现这一目标的选项/解决方案?

4

0 回答 0