JSF生命周期,立即= true

时间:2013-12-11 09:19:54

标签: jsf page-lifecycle

当我阅读文章 Listen and debug JSF lifecycle phases 时  在@BalusC的帮助下,我在理解这篇文章时遇到了一些麻烦。

Add immediate="true" to UIInput and UICommand 时,它说:

  

注意所有具有立即的组件:,因为跳过了更新模型值阶段,未设置值绑定,并且值绑定getter将返回null。但价值仍然可用......

     

注意其他组件没有立即:同一表单中没有设置为immediate =“true”的任何其他UIInput组件将不会被转换,验证或更新,但在幕后inputComponent.setSubmittedValue(submittedValue)将在执行action()方法之前执行。你可以检索......

这是否意味着无论是否有immediate Update model values phase 总会被跳过,因为h:commandButton中的immediate="true"?如果是这样,支持bean中的值不会改变,对吧?

但是,在文章的last paragraph中,它总结了“何时使用immediate = true”并提到:

  
      
  • 如果在UIInput和UICommand组件中都设置了应用请求值阶段,那么对于没有设置此属性的任何UIInput组件,将跳过更新模型值阶段。使用此选项可以跳过整个表单的处理,但某些字段除外(立即执行)。例如。登录表单中的“忘记密码”按钮,其中包含必需的即时用户名字段和必需但非直接的密码字段。
  •   

我很困惑,因为我认为 Process validations Phase Update model values Phase ,无论有没有immediate一次您在immdediate=true中以相同的格式设置h:commandButton

我必须误解一些事情,请帮我澄清一下。 提前谢谢!

1 个答案:

答案 0 :(得分:1)

这部分确实需要澄清。

摘要中的含义是作业,它通常在上述阶段执行(即应用请求值,处理验证和更新模型值),即使它们发生在应用请求中价值观阶段。

我已相应更新了这篇文章。