我有一个命令按钮(特定的取消按钮),我想绕过页面上某些组件的验证。当我在命令按钮上设置了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”的预期行为吗?如果是这样,你如何解决这个取消按钮?
答案 0 :(得分:9)
&#34;更新&#34;将在Update Model Value阶段调用/执行。当你设置&#34;立即&#34;属性为按钮命令,此阶段将被忽略。有关详细信息,请参见下图。
P1: Standard Lifecycle executes 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