了解ADF生命周期中的ADF绑定
在本文中,我将重点介绍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阶段-InitContext和PrepareModel 。 在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绑定相关推荐
- adf开发_了解ADF生命周期中的ADF绑定
adf开发 在这篇文章中,我将重点介绍ADF绑定层,并探讨当最初从浏览器请求带有一些数据的ADF页面时它如何工作. Oracle ADF提供了自己的JSF生命周期扩展版. 实际上,ADF扩展了标准的J ...
- Vue生命周期中对mounted、beforeUpdate、updated的理解
Vue生命周期中对mounted.beforeUpdate.updated的理解 前言 mounted.beforeUpdate.updated 前言 以下文章纯为个人理解,如有错误,请求评论区指正呀 ...
- Vue生命周期中的created和mounted的区别
之前大部分时候都是用angular开发项目,vue写的很少,最近有必要把vue和webpack重新整理一下了.下面我们先看一下Vue生命周期中的created和mounted的区别. 我们先看一张图( ...
- Vue生命周期中mounted、created、methods、computed、watched等的区别
1.Vue生命周期中mounted和created的区别 https://blog.csdn.net/xdnloveme/article/details/78035065. 2.[Vue] 生命周期, ...
- Activity生命周期中onStart()和onResume()的区别
Activity生命周期中onStart()和onResume()的区别 在讲onStart()和onResume()的区别之前,必须清楚Activity的四种状态: 1.Running状态:一个新的 ...
- Vue 生命周期中 mounted( ) 和 created( ) 的区别
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.什么是生命周期? 用通俗的语言来说,就是Vue中实例或者组件从创建到消灭中间经过的一系列过程.虽 ...
- Android Activity 生命周期中onStart()和onResume()的区别
首先了解Activity的四种状态 Running状态:一个新的Activity启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态. Paused状态:当Activit ...
- Vue生命周期中mounted和created的区别
一.什么是生命周期? 用通俗的语言来说,就是Vue中实例或者组件从创建到消灭中间经过的一系列过程.虽然不太严谨,但是也基本上可以理解. 通过一系列实践,现在把所有遇到的问题整理一遍,今天记录一下cre ...
- 【vue其他相关】欢迎讨论!异步请求放在生命周期中的created还是mounted,已填坑
文章目录 前言 两个生命周期 场景1 场景2 场景3 结论 如何处理场景一和场景二的问题 最后 前言 曾经在百度上搜这个问题,看到的答案都是相互复制粘贴的,而且个人觉得并没具体场景举例说明,并没有好的 ...
最新文章
- python检索地址_35.leetcode题目讲解(Python): 搜索插入位置
- python怎么实现音乐快进,python将音频进行变速的操作方法
- OpenCV Sobel检测算子和Scharr检测算子
- 面试题 flex(二)
- python计算n的32次方_获得用户输入的一个整数N,计算并输出N的32次方。_学小易找答案...
- [云炬python3玩转机器学习笔记] 1-3课程所使用的主要技术栈
- 一步一步写算法(之寻找丢失的数)
- unix系统编码 java_Java 正确的做字符串编码转换
- getcwd函数_PHP getcwd()函数与示例
- java中字节码_Java字节码浅析(—)
- 用 Python 写一个 Kaggle 比赛排行榜的爬虫
- vb如何用代码对Excel的指定区域实行保护
- php微博发布时间,PHP格式化显示时间函数,用于微博、社交媒体等,类似豆瓣
- dwg格式的计算机图,看图纸(DWG文件浏览器)
- GB28181协议——摄像机语音对讲
- zblog修改上传服务器,zblog模板怎么上传?zblog模板怎么替换logo?zblog及zblog模板和插件...
- 【验证码识别】OpenCV挑战腾讯防水墙滑动验证码
- GBA火焰纹章改版-智慧的结晶2.0更新(发布)
- 新 Nano(五)自己写个库,读 DHT11 / DHT22
- 云笔记软件有很多,哪款笔记比较好用?
热门文章
- 你们考试,我们都有点紧张呢…
- javaweb实现分页查询(一)
- 为什么要有周考?周考是用来干什么的?
- MySQL查询出来的不重复
- Scanner获取用户输入
- 链接(了解)---Linux
- System.err: java.net.UnknownServiceException: CLEARTEXT communication to 192.168.43.172 not permitte
- java谓词_在Java中谓词
- BigDecimal保留两位小数,不足两位补0
- (转)漫画:什么是分布式事务?