JSF控件的immediate属性和页面生命周期

JSF中的控件基本都有immediate属性,对于这个属性的使用总结如下,更详细内容可参考Oracle官方文档。

1,为了更好的理解immediate属性,先看一下JSF页面的生命周期:

JSF页面的生命周期有六个,可参考下面的图;ADF页面是建立在JSF页面基础上的,它的生命周期包括JSF页面的六个生命周期外,还包括Init Context and Prepare Model、Validate Model Updates、Metadata Commit和Prepare Render几个阶段。JSPX页面具有JSF页面的生命周期还是具有ADF页面的生命周期,要看页面是在faces-config.xml还是 adfc-config.xml中管理的。对于生命周期的详细内容可参考Oracle官方的ADF开发手册。

2,控件的immediate属性与控件(component)的转换校验逻辑关系紧密。通常,页面控件中的值在Process Validations阶段进行转换校验(可参考<af:inputListOfValues>的API);当设置一个控件的immediate属性为true的时候,控件中的值将会提前在Apply Request Values阶段进行转换校验。
1) 对于输入控件,immediate为true的时候,该控件的输入值的校验会比immediate为false的早,可以理解为立即执行校验。当该控件上的校验失败的时候,该控件所在页面的生命周期直接跳转到Render Response阶段,并且所有immediate为false的控件都不执行校验操作;如果控件上的校验成功,并且控件的newValue与oldValue不同,就会在Apply Request Values阶段触发一个ValueChangeEvent,而不是常规模式下的Process Validations阶段,并且这个ValueChangeEvent的执行也早于这个控件上的其他ActionListener。
2) 对于命令控件,如果immediate为true,页面的生命周期直接跳转到Render Response阶段,忽略掉validation和model update等阶段。经常使用的是Cancel按钮。


Reference:
Oracle Fusion Middleware 11g: Build Applications with ADF I(Volume I • Student Guide)(D53979GC11)
http://download.oracle.com/docs/cd/E12839_01/apirefs.1111/e12419/tagdoc/af_inputListOfValues.html
Fusion Developer's Guide for Oracle Application Development

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值