p:commandButton with immediate = true

时间:2013-05-14 11:19:20

标签: jsf-2

在命令按钮中声明immediate="true"时采取了什么操作?文档说

  

布尔值,用于确定动作事件的phaseId,当在“应用请求值”处理真实动作时,在“调用应用程序”阶段时为false。

但是,我不明白。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:10)

JSF生命周期包含6个阶段,即:

  1. 还原视图
  2. 应用请求值
  3. 流程验证
  4. 更新模型值
  5. 调用应用程序
  6. 渲染回复
  7. 如果命令按钮具有immediate="true",则跳过阶段“过程验证”和“更新模型值”。因此,不会处理转换和验证,也不会更新托管bean中的属性。

    但是,如果表单中的UIInput也具有immediate =“true”,那么它的值将在托管bean中转换,验证和更新,因为它将在“应用请求值”阶段发生。

    当您使用具有immediate =“true”的按钮时,可以使用“取消”按钮。