0

编辑: 我找到了解释(与 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:commandButtonhas 作为默认值process="@form"(这就是它验证picklist表单内部的原因)。我尝试了一些东西来自己设置目标列表内容,例如,使用onTransfer事件。但是它没有更新目标列表->看起来验证失败并且目标列表没有更新( jsf验证失败并直接进入renderResponse阶段,即模型值没有更新),因此旧的resp。加载初始值。

此致,

ProgrammingIsAwsome

4

0 回答 0