在本文中,我将重点介绍ADF绑定层,并探讨当最初从浏览器请求带有某些数据的ADF页面时,它如何工作。

Oracle ADF提供了自己的JSF生命周期扩展版。 实际上,ADF扩展了标准JSF生命周期实现类,并提供了ADF阶段侦听器,该侦听器会在阶段事件之前和之后得到通知。 这是扩展了相应ADF阶段的JSF生命周期阶段的列表:

  • 恢复视图

    • ADF初始化上下文
  • 应用请求值
  • Craft.io验证
  • 更新模型值
    • ADF验证模型更新
  • 调用申请
    • ADF元数据提交
  • 渲染响应
    • ADF准备渲染

请求有两种类型: 初始请求回发 。 在初始请求期间,生命周期非常短。 在“ 还原视图”阶段之后,生命周期会跳至“ 渲染响应”阶段,跳过其余阶段。

当用户最初从浏览器请求ADF页面时,应用服务器会使用一系列Servlet过滤器对请求进行一些预处理。 其中之一是ADFBindingFilter 。 此筛选器在Web.xml文件中定义,并且需要将ADF绑定应用于操作。 因此,当此过滤器处理请求时,它将在当前会话中查找绑定上下文 ,如果不存在,则将创建一个新实例。 绑定上下文 作为DataBindings.cpx文件的运行时表示形式,包含页面及其页面定义文件之间的映射。 它还包含应用程序中使用的数据控件的列表。 有了所有这些,框架就调查了哪些数据控件和哪些绑定容器将参与请求。 ADFBindingFilter查找或创建每个必需的数据控件的实例,并调用其beginRequest方法。

绑定上下文初始化后,控件将返回到负责处理JSF生命周期阶段的Faces Servlet。 当JSF Lifecycle处理Restore View阶段时,它将使用beforePhase事件通知ADF阶段侦听器ADF阶段侦听器又将事件分派给所有内部阶段侦听器,例如Update Binding Listener 。 然后通过在Binding Context上调用findBindingContainerByPath来初始化所需的绑定容器

因此, 绑定上下文, 数据控件绑定容器已在请求的开始处创建。 该框架使用ADF PageLifeCycle类,以通过ADF阶段扩展JSF生命周期。 ADF阶段侦听器侦听Restore View阶段的afterPhase事件,并在ADF PageLifeCycle类上调用适当的方法。 这样,标准的JSF restoreView阶段已扩展为两个ADF阶段-InitContextPrepareModel 。 在PrepareModel阶段, ADF PageLifecycle绑定容器上调用刷新方法,并将阶段标识符作为参数传递。

准备模型期间, 绑定容器将执行其refresh属性设置为prepareModel的任何可执行条目(迭代器,操作等)。 这篇文章详细介绍了refresh属性。

在考虑对该页面的初始请求时,我们将跳过下一个生命周期阶段,并跳至渲染响应阶段。

ADF阶段侦听器侦听“ 渲染响应”阶段的beforePhase事件,并通过调用一个ADF PageLifeCycle类的对应方法在“ ADF阶段准备渲染”中对其进行扩展。 准备渲染阶段也称为渲染模型 。 在此阶段,框架再次在绑定容器上调用refresh方法,并且此时将其refresh属性设置为renderModel的那些迭代器被执行。

JSF Lifecycle将控件转发到页面渲染器,在这里渲染UI组件时,它们需要来自基础模型的数据。 刷新属性设置为延迟 (默认值)的那些迭代器将在此处执行。

在请求的最后, ADF绑定筛选器在参与请求的每个数据控件上调用endRequest方法。 这导致基础应用程序模块被释放回应用程序模块池。

而已!

翻译自: https://www.javacodegeeks.com/2015/06/understanding-adf-bindings-in-adf-lifecycle.html

了解ADF生命周期中的ADF绑定相关推荐

  1. adf开发_了解ADF生命周期中的ADF绑定

    adf开发 在这篇文章中,我将重点介绍ADF绑定层,并探讨当最初从浏览器请求带有一些数据的ADF页面时它如何工作. Oracle ADF提供了自己的JSF生命周期扩展版. 实际上,ADF扩展了标准的J ...

  2. Vue生命周期中对mounted、beforeUpdate、updated的理解

    Vue生命周期中对mounted.beforeUpdate.updated的理解 前言 mounted.beforeUpdate.updated 前言 以下文章纯为个人理解,如有错误,请求评论区指正呀 ...

  3. Vue生命周期中的created和mounted的区别

    之前大部分时候都是用angular开发项目,vue写的很少,最近有必要把vue和webpack重新整理一下了.下面我们先看一下Vue生命周期中的created和mounted的区别. 我们先看一张图( ...

  4. Vue生命周期中mounted、created、methods、computed、watched等的区别

    1.Vue生命周期中mounted和created的区别 https://blog.csdn.net/xdnloveme/article/details/78035065. 2.[Vue] 生命周期, ...

  5. Activity生命周期中onStart()和onResume()的区别

    Activity生命周期中onStart()和onResume()的区别 在讲onStart()和onResume()的区别之前,必须清楚Activity的四种状态: 1.Running状态:一个新的 ...

  6. Vue 生命周期中 mounted( ) 和 created( ) 的区别

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.什么是生命周期? 用通俗的语言来说,就是Vue中实例或者组件从创建到消灭中间经过的一系列过程.虽 ...

  7. Android Activity 生命周期中onStart()和onResume()的区别

    首先了解Activity的四种状态 Running状态:一个新的Activity启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态. Paused状态:当Activit ...

  8. Vue生命周期中mounted和created的区别

    一.什么是生命周期? 用通俗的语言来说,就是Vue中实例或者组件从创建到消灭中间经过的一系列过程.虽然不太严谨,但是也基本上可以理解. 通过一系列实践,现在把所有遇到的问题整理一遍,今天记录一下cre ...

  9. 【vue其他相关】欢迎讨论!异步请求放在生命周期中的created还是mounted,已填坑

    文章目录 前言 两个生命周期 场景1 场景2 场景3 结论 如何处理场景一和场景二的问题 最后 前言 曾经在百度上搜这个问题,看到的答案都是相互复制粘贴的,而且个人觉得并没具体场景举例说明,并没有好的 ...

最新文章

  1. python检索地址_35.leetcode题目讲解(Python): 搜索插入位置
  2. python怎么实现音乐快进,python将音频进行变速的操作方法
  3. OpenCV Sobel检测算子和Scharr检测算子
  4. 面试题 flex(二)
  5. python计算n的32次方_获得用户输入的一个整数N,计算并输出N的32次方。_学小易找答案...
  6. [云炬python3玩转机器学习笔记] 1-3课程所使用的主要技术栈
  7. 一步一步写算法(之寻找丢失的数)
  8. unix系统编码 java_Java 正确的做字符串编码转换
  9. getcwd函数_PHP getcwd()函数与示例
  10. java中字节码_Java字节码浅析(—)
  11. 用 Python 写一个 Kaggle 比赛排行榜的爬虫
  12. vb如何用代码对Excel的指定区域实行保护
  13. php微博发布时间,PHP格式化显示时间函数,用于微博、社交媒体等,类似豆瓣
  14. dwg格式的计算机图,看图纸(DWG文件浏览器)
  15. GB28181协议——摄像机语音对讲
  16. zblog修改上传服务器,zblog模板怎么上传?zblog模板怎么替换logo?zblog及zblog模板和插件...
  17. 【验证码识别】OpenCV挑战腾讯防水墙滑动验证码
  18. GBA火焰纹章改版-智慧的结晶2.0更新(发布)
  19. 新 Nano(五)自己写个库,读 DHT11 / DHT22
  20. 云笔记软件有很多,哪款笔记比较好用?

热门文章

  1. 你们考试,我们都有点紧张呢…
  2. javaweb实现分页查询(一)
  3. 为什么要有周考?周考是用来干什么的?
  4. MySQL查询出来的不重复
  5. Scanner获取用户输入
  6. 链接(了解)---Linux
  7. System.err: java.net.UnknownServiceException: CLEARTEXT communication to 192.168.43.172 not permitte
  8. java谓词_在Java中谓词
  9. BigDecimal保留两位小数,不足两位补0
  10. (转)漫画:什么是分布式事务?