编辑: 我找到了解释(与 f:event 一起玩)并看到 PF 具有我假设的行为,即 PF 框架本身的支持 bean 值没有更新,因为验证阶段失败(因此跳过更新模型值阶段并直接进入渲染阶段)将源/目标列表保持原样。
我有以下代码:
<p:pickList
id="parentpicklist"
value="#{manager.parent}"
var="entity"
itemValue="#{entity}"
labelDisplay="true"
required="true"
rendered="#{not empty manager.parent.source or not empty manager.parent.target}">
在页面的末尾我有这样的 ap:commandButton:
<p:commandButton
action="#{manager.save}"
value="#{messages.saveLabel}"
title="#{messages.saveHint}"
update="edit-extract" <!-- the picklist resides inside of this component -->
rendered="#{manager.editMode}">
场景: 页面上有这个选项列表,它的源列表和目标列表填充了值,即两者都不为空。 现在问题如下:当我从目标列表中删除所有项目并按“保存”时,验证失败并显示:需要验证。到目前为止,一切都很好。
问题:它不仅显示验证失败,而且picklist
在加载页面时更新其初始值。这是 PF 标准行为吗?
因为p:commandButton
has 作为默认值process="@form"
(这就是它验证picklist
表单内部的原因)。我尝试了一些东西来自己设置目标列表内容,例如,使用onTransfer
事件。但是它没有更新目标列表->看起来验证失败并且目标列表没有更新( jsf验证失败并直接进入renderResponse
阶段,即模型值没有更新),因此旧的resp。加载初始值。
此致,
ProgrammingIsAwsome