p:commandButton with immediate = true

Pon*_*ran 5 jsf-2

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

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

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

dam*_*ian 10

JSF生命周期包含6个阶段,分别是:

  1. 恢复视图
  2. 应用请求值
  3. 流程验证
  4. 更新模型值
  5. 调用应用程序
  6. 渲染响应

如果有命令按钮immediate="true",则跳过阶段"过程验证"和"更新模型值".因此,不会处理转换和验证,也不会更新托管bean中的属性.

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

您可以使用具有immediate ="true"的按钮的一个示例是"取消"按钮的情况.