oracle oaf结构,OAF文档四:分析OAF页面(二)
控制器
控制器是用来响应用户的动作和定向应用的流向的。
控制器可以关联到视图的REGION级别,(很多情况下,任何的OAF web
bean实现了oracle.apps.fnd.framework.webui.beans.OAWebBeanContainer接口,可以关联到控制器)。
你建立的所有的控制器都应该为oracle.apps.fnd.framework.webui.OAControllerImpl的子类。
你可以在控制器中实现WEB
BEAN的功能。你可以编写代码用来:
l
在运行时操作和初始化(包括可编程的你不能以声明的方式建立的布局)
l
截取和处理用户事件如按下按钮
处理请求
当浏览器为你的页面发布一个OA.jsp请求时:
1、
oracle.apps.fnd.framework.webui.OAPageBean(主要的OAF页面处理类)使用页面名称来决定需要哪个root
application module,然后从application
module池中取出。这个application
module 也从连接池中取出JDBC连接,然后这个页面的事务处理的上下文就确定了。
2、
用户的SESSION被验证,如果无效,显示登录的页面。
3、
如果用户是有效的,OAPageBean评估请求参数来确定当做HTTP
POST或GET来处理。
处理GET请求
当浏览器向服务器发送一个GET页面的请求时(或者你手工的FORWARD),OAF使用可声明的UI定义来建立web
bean结构
1、
OAPageBean调用页面的顶层pageLayout的bean的processRequest()方法,整个WEB
BEAN结构被递归的执行来初始化WEB
BEAN(包括任何关联的模型组件):
l
每个web
bean实例化它的控制器(如果有的话)并且调用控制器上的processRequest(OAPageContext,OAWebBean),这是一个你用来建立、修改你的页面布局,设置web
bean属性和执行手工的数据初始化的方法(如当你打开页面时你可能要执行一个自动查询)。
l
一些复杂的web
bean(如:oracle.apps.fnd.framework.webui.beans.table.OATableBean和oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean)执行post控制器执行prepareForRendering()方法。
l
每个web
bean都调用它的子类的processRequest()方法。
2、
oracle.apps.fnd.framework.webui.OAPageBean将web
bean结构交给uix并发送到浏览器。
处理POST请求
当浏览器发送一个POST请求到服务器
1、
OAPageBean检查看web
bean是否存在于内存中,如果没有(可能因为资源被重新构造了,用户按了后退按钮,或者POST是由一个对话框发出的),那就重新建立web
bean的结构,像上面执行GET时一样。
2、
OAPageBean在所有结构树中的bean上调用processFormDate(OAPageContext,OAWebBean),将form中的数据写入module(它调用pageLayout
region上的processFormData,所以每个web
bean教递归的调用了它的子类的processFormData)。写入form数据到model自动的调用了属性级和实体级的验证。如果你抛出任何验证异常,执行会停止并显示错误信息。
3、
如果在执行processFormData()过程中没有异常,OAPageBean调用所有的bean上的processFormRequest(OAPageContext,OAWebBean)方法,如上面所讲。这个过程让你的控制器对用户的动作作出响应。
4、
如果没有JSP
FORWARD或者重定向,或者在processFormRequest()方法中没有异常,则页面被刷新。
OAPageContext
当OAF接收到一个OA.jsp请求,OAPageBean建立一个oracle.apps.fnd.framework.webui.OAPageContext,这个类只在页面处理过程中才存在。上面所说的三个关键方法(processRequest(),processFormData()和processFormRequest())都有一个OAPageContext参数,你编写的任何控制器总是要使用这个关键的类。
如上图所示,OAPageContext同时引用了request和root applications
mudule。实际上OAPageContext被交给你的每个控制器的执行方法,在下面的任务中你将使用OAPageContext:
访问请求参数
可能最重要是,这是一个你用来通过getParameter(String)方法来读取请数据的类(请求包括URL中的参数,如果是POST,任何的名称值和事件都关联到用户的动作)。
提示:对于页面中的不同的WEB
BEAN(按钮、输入框等),传到getParameter()的名称值都通过你在页面中定义的ID来分配。如:如果用户按了一个叫“GoButton”的按钮,你可以在Jdeveloper在写以下的控制器代码:
processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
if (pageContext.getParameter("GoButton") != null)
{
// The user pressed the "Go" button, do something...
}
}
访问root application
module
OAPageContext缓存了一个对root application
module的引用,它提供了访问它的视图对象和事务。如果需要访问application
mudule:
processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
OAApplicationModule am =
(OAApplicationModule)pageContext.getRootApplicationModule();
}
导航介绍
你使用这个类的方法来告诉OAF执行一个JSP
forward。如:
processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
if (pageContext.getParameter("CreateButton") != null)
{
// The user pressed the "Create Supplier" button, now perform a JSP forward to
// the "Create Supplier" page.
pageContext.setForwardURL("OA.jsp?page=/oracle/apps/dem/employee/webui/EmpDetailsPG",
null,
OAWebBeanConstants.KEEP_MENU_CONTEXT,
null,
null,
true, // Retain AM
OAWebBeanConstants.ADD_BREAD_CRUMB_YES, // Show breadcrumbs
OAWebBeanConstants.IGNORE_MESSAGES);
}
}
访问应用上下文信息
如同模型中的OADBTransaction,OAPageContext提供了访问servlet
session级别的oracle应用上下文信息,如用户名、id、当前职责等。如下面代码显示如何取得用户名:
processRequest(OAPageContext pageContext, OAWebBean webBean)
{
String userName = pageContext.getUserName();
}
Web bean 架构
所有的WEB
BEAN继承了UIX架构中的相应的bean。如一个OATableBean继承了oracle.cabo.ui.beans.table.TableBean。
每个OAF web
bean也实现了一组接口,这些接口定义了OAF加到UIX
bean中的行为。
l
Oracle.apps.fnd.framework.webui.beans.OAWebBean定义了所有的WEB
BEAN的通用的核心的行为。如:不同于其它行为,它定义了processRequest,processFormData和processFormRequest方法,这些方法都在不同的bean中有实现。
l
Oracle.apps.fnd.framework.webui.OAWebBeanConstants:在视图和控制器中使用的一组常量。
l
Oracle.apps.fnd.framework..webui.beans.OAWebBeanData:定义了通用的客户化定义和数据源管理行为。
l
Oracle.apps.fnd.framework.webui.beans.OAWebBeanContainer:定义了所有的web
bean的做为容器的特点。如:所有的布局web
bean都实现这个接口。只有实现了这个接口的bean才可以关联到控制器。
l
OAWebBean:定义了在OAF上下文中的bean中固有的行为。如:OATableBean实现了oracle.apps.fnd.framework.webui.beans.OAWebBeanTable接口。
内部bean结构
每个web
bean都维护它自己以下的信息:
_indexedChildren
子web
bean
_namedChildren
UIX指定的子web
bean
_attributes web
bean的特性(描述性属性),如下图所示
数据绑定值
作为不是上图所示的情况,OAF web
bean属性实际作为数据绑定值来实现。意思是值由特定的在运行时处理组件的数据源提供。
实现
当页面实现时,UIX架构处理web
bean结构来生成html。
对任何web
bean属性,当将它交给一个实现上下文(实现上下文是UIX需要处理绑定数据的所有的信息)时,UIX调它的getAttributeValue()方法。对于一个给定的属性,如:实现上下文知道哪个视图对象、视图属性和当前行是什么。数据绑定值使用实现上下文提供的这些信息来询问数据源,并返回实际的值,所以它能够生成相应的HTML。
oracle oaf结构,OAF文档四:分析OAF页面(二)相关推荐
- AlexNet做文档布局分析 (版面分析)数据集
向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程 公众号:datayx 文档布局分析 (Document Layout Analysis) 是识别和分类文本文档的扫描 ...
- 文档布局分析 扭曲文档图像恢复
向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程 公众号:datayx 对文本进行OCR前,必须分析和定义文档的逻辑结构.例如文本块.段落.行的位置:是否有应该重建的 ...
- 基于OpenVINO与PP-Strucutre的文档智能分析 - 飞桨AI Studio
★★★ 本文源自AlStudio社区精品项目,[点击此处]查看更多精品内容 >>> 基于OpenVINO与PP-Strucutre的文档智能分析 本示例包含以下部分组成: 项目说明 ...
- Oracle 12c RAC 安装文档
首先,谢谢原作者:此文为转载的文章,现将原地址贴出如下: Oracle 12c RAC 安装文档www.cnblogs.com/leohahah/p/9488963.html 更多精彩Zabbix文 ...
- Oracle单实例通过DG迁移至RAC集群(Oracle 11g 超详细文档)
实验:Oracle单实例通过DG迁移至RAC集群(Oracle 11g 超详细文档) 步骤1:Oracle单实例搭建 1. 系统环境检查 2. 创建用户.组,配置环境变量.安装目录 3. 安装Orac ...
- 利用java实现android项目结构API文档
利用java实现android项目结构API文档 2012-11-16 快速生成API文档列表 在android项目中的.CLASSPATH文件里添加android.jar路径 例如: <cla ...
- AI论文解读丨融合视觉、语义、关系多模态信息的文档版面分析架构VSR
摘要:文档版式分析任务中,文档的视觉信息.文本信息.各版式部件间的关系信息都对分析过程具有很重要的作用.本文提出一种融合视觉.文本.关系多模态信息的版式分析架构VSR. 本文分享自华为云社区<论 ...
- 论文解读丨图神经网络应用于半结构化文档的命名实体识别和关系提取
摘要: 随着用于传递和记录业务信息的管理文档的广泛使用,能够鲁棒且高效地从这些文档中自动提取和理解内容的方法成为一个迫切的需求.本次解读的文章提出利用图神经网络来解决半结构化文档中的实体识别(NER) ...
- python连接mysql输出数据库结构docx文档
python连接mysql输出数据库结构docx文档-Python文档类资源-CSDN下载
- 文档布局分析工具之DIVA
论文:Open Evaluation Tool for Layout Analysis of Document Images Github:https://github.com/DIVA-DIA/DI ...
最新文章
- 独家 | 如何用Python编写你最喜欢的R函数?
- 近看图灵碗 (8. 我就是上帝) (上)
- ThinkSNS积分商城系统 一站式解决企业商城建站需求
- Oracle VM VirtualBox下各种视图切换
- MFC+OPENCV+显示MAT类型图像
- 链表的数据域怎么使用结构体_一步一步教你从零开始写C语言链表
- 第三场阴影场与属性访问器接口
- 【java】java String 源码
- 一行Python代码统计词频
- Qt Designer设计 UI 文件并调用
- TCP/IP协议详解(干货!)
- 鲲鹏920的服务器芯片,鲲鹏920芯片是什么芯片
- 软件沙箱技术 – 安全分析沙箱Cuckoo Sandbox
- Win10 安装 SQL Server 2008 与使用指南
- 亚马逊测评技术一定要懂得以下几点
- php学习笔记-4.登录超时的设置
- 找回HDFS corrupted文件残留数据
- ENIAC到EDVAC到Intel的思考
- Apsara Clouder基础技能认证-阿里巴巴编程规范考试真题
- 百度推广创意中的通配符有哪些注意事项