修改 我找到了解释(使用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}">
在页面的末尾,我有一个像这样的p: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
具有默认process="@form"
(这就是为什么它正在验证表单中的picklist
)。我试了几个东西来自己设置 targetlist 内容,例如onTransfer
事件。
但它没有更新目标列表 - &gt;看起来验证失败并且 targetlist 没有得到更新(jsf验证失败并直接进入renderResponse
阶段,即模型值未更新)因此旧的resp 。初始值已加载。
致以最诚挚的问候,
ProgrammingIsAwsome