OAF_架构MVC系列3 - View的概述(概念)
2014-06-18 Created By BaoXinjian
上文介绍在OAF按MVC的架构,分为三层,即Model-View-Contorl, 对OAF 的View层的一下基本概念和一些小案例
Page - 页面概述
- Page的关键属性
- Item的关键属性
Reusable Components - 可重用组件
- 控件的继承Extend
- 控件的共享Shared
Attribute Sets - 控件属性组
- 通过Item的Attribute Set 属性手工设定
- 通过attrSet.setAttributeValue() / getAttributeValue()进行代码自动控制
URL Parameters - 链接参数
- 一种Simplest Possible Expression Language (SPEL) 语法
- 五种语法结构
{!Attr}
{@Attr}
{$Attr}
{@@RETURN_TO_MENU}
{@@RETURN_TO_PORTAL}
Style Sheets - 样式表
- Item Type 需设定默认CSS的一些关系,以确认CSS的结构
- Item Type (staticStyledText) -> CSS Class (OraInstructionText)
- Item Type (text entry fields, checkboxes, poplists and radio buttons) -> CSS Class (OraFieldText)
- Item Type (messageStyledText) -> CSS Class (OraInstructionText)
Model Interaction - View和Model的整合
- View 读Model中的数据
- View 写Model中的数据
二、具体分析
1. Page - 页面概述
一般在创建OAF时,都会创建Page -> Region -Items
1.1 Page 的一些关键属性
- AM Definition:
- 作用: 定义所使用的Root Application Model,
- 例子: oracle.apps.fnd.framework.toolbox.tutorial.server.SearchAM - 页面所使用的是SearchAM,AM中包含了VO, VO关联了SQL和EO,从而限定了该页面所能引用的内容
- Window Title
- 作用: Window窗口的标题
- TitleForm
- 作用: 页面的标题
- Help Target
- 作用: 页面上显示Help Link链接
- 例子: 设定为true
- AutoFooter
- 作用: 页面下的页脚
- 例子: 设定为True
- PageLayout Components
- 作用: 页面中所有的空间, Page中最为复杂的概念,涉及的控件非常多,另文介绍
1.2 Item 的一些关键属性
- Extends: 是否有所引用的继承类
- Attribute Set: 是否有所引用的属性组
- Destination URI: 超级链接属性,定义参数时,使用的语言为SPEL
- Action Type: 是否存在ActionCSS Class: 是否有所引用的样式表
- Action Type
- Event
- Parameter
- View instance / View Attribute: 该栏位是否取自数据VO,如果是,定义VO和VO的栏位
- Admin / User Personalization: 是否启用个性化
- Inital Value: 初始值
1.3 SPEL语言
OAF 在定义页面URL中的参数或者在Action中参数时,使用的的是SPEL(Simplest Possible Expression Language)语言
比如Action中Parameter引用页面上一个参数:${oa.ViewInstanceName.ViewAttributeName}
2. Reusable Components - 可重用组件
每个种开发语言都会涉及到某些组件的公用性和继承性,
2.1 公用性:
- Shared Regions
- Shared Pages
- Shared Items
- Shared Logistic
2.2 继承性:
另文介绍
2.3 特殊的例子 - LOV
LOV体现了既有公用性又存在继承性
- 在定义LOV Region时,需将其定义为public
- 在Item引用该LOV,必须Extend该LOV
3. Attribute Sets - 控件属性组
3.1 通过Item的Attribute Set 属性手工设定
Oracle 默认的AttributeSet存放位置: /oracle/apps/fnd/attributesets/
3.2 通过attrSet.setAttributeValue() / getAttributeValue()进行代码自动控制
public void processRequest(OAPageContext pageContext, OAWebBean webBean){
super.processRequest(pageContext, webBean);
AttributeSet attrSet =
new AttributeSet(pageContext, "/oracle/apps/fnd/attributesets/Buttons/Create");
String createPrompt = (String)attrSet.getAttributeValue(pageContext, PROMPT_ATTR);
}
4. URL Parameters - 链接参数
页面在进行超链接传参数时,通URL Parameters进行实现
比如OA.jsp?OAFunc=FWK_TBX_T_PO_PAGE&order={@OrderNum},在下个页面就可以使用OrderNum参数了
这是一种一种Simplest Possible Expression Language (SPEL) 语法
五种语法结构
- {!Attr}
- {@Attr}
- {$Attr}
- {@@RETURN_TO_MENU}
- {@@RETURN_TO_PORTAL}
5. Style Sheets - 样式表
Item Type 需设定默认CSS的一些关系,以确认CSS的结构, 从而控制控件的显示方式一致性,输入的Item有输入CSS style,显示的item有显示CSS style,其实就是页面和控件的风格
- Item Type (staticStyledText) -> CSS Class (OraInstructionText)
- Item Type (text entry fields, checkboxes, poplists and radio buttons) -> CSS Class (OraFieldText)
- Item Type (messageStyledText) -> CSS Class (OraInstructionText)
6. Model Interaction - View和Model的整合
6.1 View 读Model中的数据
系统在读数据时,其实就是通过读目前的View Object 中RowImp对应的EO的getAttributeName去实现
下图就比较清楚地的进行了展示
6.2 View 写Model中的数据
系统在写数据时,其实就是通过读目前的View Object 中RowImp对应的EO的setAttributeName去实现
下图就比较清楚地的进行了展示
Thanks and Regards
OAF_架构MVC系列3 - View的概述(概念)的更多相关文章
- OAF_架构MVC系列4 - Control的概述(概念)
2014-06-18 Created By BaoXinjian
- OAF_架构MVC系列2 - Model的概述(概念)
2014-06-22 Created By BaoXinjian
- OAF_架构MVC系列1 - MVC的概述(概念)
2015-04-03 Created By BaoXinjian
- mvc项目架构分享系列之架构搭建初步
mvc项目架构分享系列之架构搭建初步 Contents 系列一[架构概览] 0.项目简介 1.项目解决方案分层方案 2.所用到的技术 3.项目引用关系 系列二[架构搭建初步] 4.项目架构各部分解析 ...
- Asp.net mvc项目架构分享系列之架构概览
Asp.net mvc项目架构分享系列之架构概览 Contents 系列一[架构概览] 0.项目简介 1.项目解决方案分层方案 2.所用到的技术 3.项目引用关系 系列二[架构搭建初步] 4.项目架构 ...
- Asp.net mvc项目架构分享系列之架构搭建初步
copy to:http://www.cnblogs.com/ben121011/p/5014795.html 项目架构各部分解析 Core Models IDAL MSSQLDAL IBLL BLL ...
- 【ASP.NET MVC系列】详解View
本篇文章内容属于ASP.NET MVC系列视图篇,主要讲解View,大致内容如下: 1.Views文件夹讲解 2.View种类 3.Razor语法 4.对视图的基本操作 一 Views文件夹 (一 ...
- 【ASP.NET MVC系列】浅谈ASP.NET MVC八大类扩展(上篇)
lASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操 ...
- 【ASP.NET MVC系列】浅谈ASP.NET MVC运行过程
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
随机推荐
- error_log() 范例
<?php// 如果无法连接到数据库,发送通知到服务器日志if (!Ora_Logon($username, $password)) { error_log("Oracle da ...
- Linux内核源代码的结构(转)
源代码所有在目录:/usr/src/linux (大部分linux发行版本中) init 内核初始化代码 kernel 内核核心部分:进程.定时.程序执行.信号.模块... mm 内存处理 a ...
- about JNI
1.Java对C/C++事件处理的封装JIT(Just in Time.Java语言的原动态编译技术) 大多数的游戏引擎都是使用可移植的C语言开发的,然后通过简单的封装以适应特殊的平台. 2.Andr ...
- 比较实用的JavaScript库
如果你操作过cookie的接口,那么你一定会感觉这东西的规范真的是太复杂了,根本记不住啊,其实你是对的,因为cookie的接口设计的是有问题的,也就是说设计的太底层了,根本不友好,那么来试试这个js库 ...
- Softmax回归(使用theano)
# coding:utf8 import numpy as np import cPickle import theano import os import theano.tensor as T cl ...
- 解决方法:loadrunner 场景下执行webservice脚本是---报错10492 Error: Exception was raised when calling per-process-init function in extens
在vug下执行时,脚本无异常,但是在controller下执行时报下面错误,网上查了下,解决方法千奇百怪,但无一可行. 分析了下错误,似乎是初始化进程有关.想到rts中的设置习惯时以线程方式执行. 遂 ...
- WCF入门教程三[WCF的宿主]
一.WCF服务应用程序与WCF服务库 我们在平时开发的过程中常用的项目类型有“WCF 服务应用程序”和“WCF服务库”. WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定 ...
- ABBYY如何把PDF转换Excel
我们都知道2007以上版本的Office文档,是可以直接将文档转存为PDF格式文档的.那么反过来,PDF文档可以转换成其他格式的文档吗?这是大家都比较好奇的话题.如果可以以其他格式进行保存,就可以极大 ...
- 怎么用ABBYY打开PDF文档
我们日常工作中接触的文档大多都是PDF格式的,这种格式的文件需要借助工具才能打开,大家最熟悉的无非就是Adobe了,但你知道吗?除了Adobe,OCR文字识别软件也可以打开PDF文档,比如ABBYY ...
- linux包之procps之sysctl命令
概述 [root@localhost ~]# rpm -qf /sbin/sysctlprocps-3.2.8-25.el6.x86_64 我们常常在 Linux 的 /proc/sys 目录下,手动 ...