我有一个包含两列表的表单。每行都有一个复选框和一个输入字段。虽然该复选框用于删除特定行,但输入字段用于(大量)编辑值。每个输入字段都使用bean验证。另外我有两个按钮:一个用于'删除',另一个用于'保存'。一切都基于素数。
<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>
('process'等于'执行'和'更新'等于'JSF 2中的'render')
现在应该可以在不验证输入字段的情况下删除所选行。因此,我使用了primfaces ajax选择器(基于jQuery选择器API)来仅选择应该在ajax请求期间处理的复选框。输入字段的值仍会发送到服务器,但不会被处理。
问题是在ajax请求之后重新呈现表。我希望输入字段保留在单击删除按钮之前输入的值(如果用户没有使用保存按钮保存更改)。当这些值被发送到服务器时,这不应该是一个大问题(例如,当验证失败时,我也得到最后输入的值)。但实际上我得到了存储在辅助bean中的值。 有没有关于如何实现这一目标的选择/解决方案?