• 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

    转载自:http://blog.csdn.net/luyushuang/article/details/6254889

    程序员的基础教程:菜鸟程序员

  • 相关阅读:
    java 查看 class文件编译时使用的编译器版本
    eclipse新建maven工程(web工程)
    U盘插入后电脑提示“使用驱动器F:中的光盘之前需要将其格式化”,该怎么办?(实测有用)
    随笔安装theano的那些故事(亲测有效,附安装包)
    Python学习4Python的交互
    Mysql热备份总结
    php中date()函数的使用
    在linux中用C语言实现ping命令的部分功能
    【转】/etc/sysconfig/目录详解
    python学习(一)
  • 原文地址:https://www.cnblogs.com/guohu/p/3925435.html
Copyright © 2020-2023  润新知