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的概述(概念)的更多相关文章

  1. OAF_架构MVC系列4 - Control的概述(概念)

    2014-06-18 Created By BaoXinjian

  2. OAF_架构MVC系列2 - Model的概述(概念)

    2014-06-22 Created By BaoXinjian

  3. OAF_架构MVC系列1 - MVC的概述(概念)

     2015-04-03 Created By BaoXinjian

  4. mvc项目架构分享系列之架构搭建初步

    mvc项目架构分享系列之架构搭建初步 Contents 系列一[架构概览] 0.项目简介 1.项目解决方案分层方案 2.所用到的技术 3.项目引用关系 系列二[架构搭建初步] 4.项目架构各部分解析 ...

  5. Asp.net mvc项目架构分享系列之架构概览

    Asp.net mvc项目架构分享系列之架构概览 Contents 系列一[架构概览] 0.项目简介 1.项目解决方案分层方案 2.所用到的技术 3.项目引用关系 系列二[架构搭建初步] 4.项目架构 ...

  6. Asp.net mvc项目架构分享系列之架构搭建初步

    copy to:http://www.cnblogs.com/ben121011/p/5014795.html 项目架构各部分解析 Core Models IDAL MSSQLDAL IBLL BLL ...

  7. 【ASP.NET MVC系列】详解View

    本篇文章内容属于ASP.NET MVC系列视图篇,主要讲解View,大致内容如下: 1.Views文件夹讲解 2.View种类 3.Razor语法 4.对视图的基本操作 一   Views文件夹 (一 ...

  8. 【ASP.NET MVC系列】浅谈ASP.NET MVC八大类扩展(上篇)

    lASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操 ...

  9. 【ASP.NET MVC系列】浅谈ASP.NET MVC运行过程

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

随机推荐

  1. ThinkPHP缓存微信公众号access_token

    access_token作为微信的全局票据,在高级接口中需要频繁调用,其有效期为7200秒,即2小时,而微信官方对调用Token的次数有限制(参见接口频率限制说明),获取access_token每日限 ...

  2. CURL学习和应用

    使用PHP的cURL库可以简单和有效地去抓网页.你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了.无论是你想从从一个链接上取部分数据,或是取一个XML文件并把 ...

  3. 《苹果开发之Cocoa编程》挑战1 创建委托 练习

    <苹果开发之Cocoa编程>第4版 P87 新建一个单窗口应用程序,设置某对象为窗口的委托,当用户调整窗口尺寸时,确保窗口高度为宽度的2倍. 需要实现的委托方法为:-(NSSize)win ...

  4. Codeforces Round #339 Div.2 A - Link/Cut Tree

    第一次正式参加常规赛想想有些小激动的呢 然后第一题就被hack了 心痛 _(:зゝ∠)_ tle点在于越界 因此结束循环条件从乘变为除 done //等等 这题没过总评 让我静静........ // ...

  5. SpringMVC给外部资源加版本号避免缓存

    一.属性文件:version.properties ->内容:version=201608  二.java代码 public class configVersion implements Ser ...

  6. treap树及相关算法

    #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <string ...

  7. Android学习笔记进阶之在图片上涂鸦(能清屏)

    Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java package xiaos ...

  8. Cannot unwrap to requested type [javax.sql.DataSource]

    遇上这个bug我的情况是这样,hibernate4以后,spring3.1不再有hibernateDaoSupport,在dao层不能继承HibernateDaoSupport, 只能显式声明Sess ...

  9. linux概念之时间与时区

    http://www.cnblogs.com/liuyou/archive/2012/07/29/2614338.html Linux时间基准 以上我们了解了RTC(实时时钟.硬件时钟)和OS时钟(系 ...

  10. 在没有spineRunTime情况下手动使用spine数据

    用spine做了一些简单UI动画,结果发现游戏用的cocos2dx版本太低了,无法集成spineRunTime,无奈只好把spine记下的关键帧数据抄到一个txt文件中,然后读取txt,再自己写代码播 ...