Immediate =“true”导致update =“component”失败

时间:2012-12-28 21:14:16

标签: jsf-2 primefaces

我有一个命令按钮(特定的取消按钮),我想绕过页面上某些组件的验证。当我在命令按钮上设置了immediate =“true”时,更新属性不起作用。通过“不工作”我的意思是:centerForm:p_definition上的值不会重置为它们应该是什么。如果我从下拉列表中选择一个项目或将数据输入到输入文本中,则单击取消时该信息将消失。设置immediate =“false”或完全关闭它会按预期重置字段。这是我遇到问题的命令按钮的定义。

<p:commandButton value="Cancel" style="float: right;"
    immediate="true"
    actionListener="#{manageBomPropHandler.doCancel()}"
    update=":centerForm:p_definition"/>

这是来自immediate =“true”的预期行为吗?如果是这样,你如何解决这个取消按钮?

4 个答案:

答案 0 :(得分:9)

&#34;更新&#34;将在Update Model Value阶段调用/执行。当你设置&#34;立即&#34;属性为按钮命令,此阶段将被忽略。有关详细信息,请参见下图。 Standard Lifecycle executes Update Model Values phase

          P1: Standard Lifecycle executes Update Model Values phase

Immediate Lifecycle ignored Update Model Values phase

          P2: Immediate Lifecycle ignored Update Model Values phase

答案 1 :(得分:2)

如果可以提供帮助,那么已经有一个已经有关于具有素数的干净输入字段的解决方案:

<p:commandButton value="Reset Tag" update="panel" process="@this" style="margin-right:20px;" >
    <p:resetInput target="panel" />
</p:commandButton>

OR

<h:commandButton value="Reset p:ajax" style="margin-right:20px;" >
    <p:ajax update="panel" resetValues="true" />
</h:commandButton>

来源:http://www.primefaces.org/showcase/ui/misc/resetInput.xhtml

答案 2 :(得分:1)

在我的情况下,为了更新字段,我已经针对所需组件附加了p:ajax。 这确保了一旦用户在任何这些字段中进行更改,就会更新支持bean中的相应字段/变量。

我的另一个要求是在用户单击立即 - 真实命令按钮后刷新数据表。 为了做到这一点,我使用了代码:

RequestContext.getCurrentInstance().reset("Datatable ID"); 

答案 3 :(得分:0)

是的,显示出我对JSF生命周期的无知。在此处找到了答案:JSF commandButton with immediate="true"和此处:https://cwiki.apache.org/confluence/display/MYFACES/Clear+Input+Components