adf开发_了解ADF生命周期中的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方法。

屏幕截图2015年6月2日下午5.10.30

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

屏幕截图2015年6月2日下午5.52.55

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

屏幕截图2015-06-02 at 6.09.48 PM

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

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

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

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

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

屏幕截图2015年6月2日下午6.39.15

而已!

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

adf开发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言实现计算器

点击蓝字关注我们1、实现逻辑首先创建菜单(menu),把我们需要实现的功能打印到运行栏屏幕上。实现加法计算实现减法计算实现除法计算实现乘法计算退出计算器当然以上都是属于最基本的计算,你当然还可以实现一些其它计算。例如:位运算(按位与、…

python怎么创建txt文件啊_python根据txt文本批量创建文件夹

前言 前言:想写这个代码的原因是因为实习的时候需要根据表格名创建对应的文件夹,如果只是很少个数文件夹的话,ctrlshiftn还可以接受吧,可是一次就要创建几百个文件夹,这就有点方方了。所以我写了一些代码解决实际的问题…

十道题带你手撕二叉树

点击蓝字关注我们1、单值二叉树题目:思路一:(遍历的方法)将根节点的值与二叉树中的每一个节点存储的val值进行比较,如果不同就返回false,如果全部相同,就返回true。代码:bool _isUni…

C语言实现面向对象编程 : 封装、继承、多态

点击蓝字关注我们不知道有多少人去了解过语言的发展史,早期C语言的语法功能其实比较简单。随着应用需求和场景的变化,C语言的语法功能在不断升级变化。虽然我们的教材有这么一个结论:C语言是面向过程的语言,C是面向对象的编程语言…

图解python pdf_Python合并同一个文件夹下所有PDF文件的方法

一、需求说明 下载了网易云课堂的吴恩达免费的深度学习的pdf文档,但是每一节是一个pdf,我把这些PDF文档放在一个文件夹下,希望合并成一个PDF文件。于是写了一个python程序,很好的解决了这个问题。 二、数据形式三、合并效果四、py…

用C语言实现状态机设计模式

点击蓝字关注我们状态机模式是一种行为模式,在 《设计模式》 这本书中对其有详细的描述,通过多态实现不同状态的调转行为的确是一种很好的方法,只可惜在嵌入式环境下,有时只能写纯C代码,并且还需要考虑代码的重入和多任…

这几行代码,惊为天人!

点击蓝字关注我们事情是这么一回事:国外有个大佬在StackExchange上发起了一个叫做 Tweetable Mathematical Art 的比赛。参赛者需要用C编写代表三原色的RD、GR、BL三个函数,每个函数都不能超过 140 个字符。每个函数都会接到 i 和 j 两个整型参数&#x…

快速搞定C/C++ 的条件编译

点击蓝字关注我们1、条件编译的时机我们都知道vscode其实是一个编辑器,你要在上面跑C或者C你需要配置编译器,拿编译器是怎样吧一个文本文件变成一个可执行文件的呢?那必然是经历以下这四步预处理:宏替换,头文件的展开&…

python连接不上数据库_pycharm连接mysql数据库连接不上

代码其实很简单,只有一小段,是在pycharm上运行的,所用的python版本为2.7,mysql版本为5.7.21 # -*- coding: UTF-8 -*- import re import MySQLdb if __name__ __main__: #打开数据库 conn MySQLdb.connect(hostlocalhost,port33…

assertj_AssertJ的SoftAssertions –我们需要它们吗?

assertj编写好的单元测试的规则之一是,它应该由于一种原因而失败,因此,单元测试应该测试一种逻辑概念。 有时很难在每个测试中拥有一个断言。 为了遵循规则,我们可能在单个测试中每个对象具有多个断言。 但是,在一个测…

用C/C++语言代码实现一个虚拟机

点击蓝字关注我们本文将教你编写一个自己的虚拟机(VM),这个虚拟机能够运行汇编语言编写的程序, 例如我朋友编写的 2048 或者我自己的 Roguelike。如果你会编程,但希望 更深入地了解计算机的内部原理以及编程语言是如何…

C++—vector的使用

点击蓝字关注我们一、vector的介绍说的简单点:vector是可以动态增长的数组容器vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。…

python词频统计完整步骤_Python中文文本分词、词频统计、词云绘制

本文主要从中文文本分词、词频统计、词云绘制方面介绍Python中文文本分词的使用。会使用到的中文文本处理包包括:wordcloud,jieba,re(正则表达式),collections。 1 准备工作 导入相关的包,读取相关数据。 #导入包 impo…

现代 C++ 测试工具链

点击蓝字关注我们gtest的问题gtest需要安装有时候带来很多不方便,比如需要经常切换gcc和clang的时候就比较麻烦,安装的gtest可能在另一个编译器下编译不过, 编写跨平台程序的时候需要多次安装gtest,非常不便。另外一个问题是网络原因&#xf…

数据结构压缩_将数据压缩到数据结构中

数据结构压缩这个故事是关于我们最近在Plumbr进行的容量优化任务。 一切始于将无害的要求添加到现有组合中。 您可能知道,Plumbr监视解决方案作为连接到服务器的Java代理分发。 只需少量添加即可跟踪一段时间内所有已连接的代理,以便可以实时回答以下问…

swing 状态视图分离_Java Swing模型视图适配器介体

swing 状态视图分离通常,我基于Spring Framework构建Java应用程序。 但是,最近有人要求我使用与语言无关的MVC框架PureMVC为客户端实现Java桌面应用程序,因此以下是我在Java Swing中为PureMVC进行员工管理展示的演示实现。 如果您想继续学习&…

超级炫酷的C语言技巧!

点击蓝字关注我们C语言常常让人觉得它所能表达的东西非常有限。它不具有类似第一级函数和模式匹配这样的高级功能。但是C非常简单,并且仍然有一些非常有用的语法技巧和功能,只是没有多少人知道罢了。一、指定的初始化很多人都知道像这样来静态地初始化数…

webgl 基础渲染demo_WebGL + ThreeJS 实现实时水下焦散 Part 1

知乎视频​www.zhihu.com采用 WebGL 和 ThreeJS 运行实时焦散运算,需要一点相关基础。本文主要介绍焦散的原理以及计算方法原作者https://github.com/martinRenou​github.com代码和原文https://github.com/martinRenou/threejs-caustics​github.com由于本人的笔电…

超硬核C++BestPractices翻译与阅读笔记

点击蓝字关注我们硬货开始这本书的副标题是:45ish Simple Rules with Specific Action items for better C ,这本书是由大佬推荐的, C学习有必要掌握一下这45条最佳实践, 可以很大程度上提升代码的可读性和健壮性, 而且这本书也不…

diskgenius单文件专业版_金蝶KIS专业版系列——系统工具六(业务套打工具)

导读:(一)问一问1.1.套打的作用1.2.举例(二)怎么进入套打设计器2.1.入口12.2.入口2(三)怎么使用套打设计器打开套打模板3.1.打开系统标准套打模板3.2.新建一个空白的套打模板3.3.保存套打模板3.…