Oracle OAF 学习小结- 字段控制 的完整案例开发
Posted Jane Chiu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle OAF 学习小结- 字段控制 的完整案例开发相关的知识,希望对你有一定的参考价值。
相关开发配置详见 Oracle OAF 学习小结(2)- 增删改查/LOV/Button/Sequence 的完整案例开发
需求概述
需求描述
要点1:页面初始化的时候,获取当前用户,并显示在界面。
要点2:勾上复选框显示详细信息,勾掉隐藏详细信息(选做)
效果图
开发步骤
创建基于OA的项目:Hello
参考下表完成:
参数 | 值 |
---|---|
默认目录 | <JDEV_USER_HOME>\\myprojects |
Workspace | DEMO.jws |
Project | DEMO.jpr |
Default Package | demo.oracle.apps.cux.emp |
DBC File | <JDEV_USER_HOME>\\dbc_files\\secure\\VIS.dbc |
用户/密码 | HAND_11175/handhand |
应用/职责简称 | CUX/HAND |
Database Connection | Syfdemo.ml.com |
检查Project运行属性:调式信息
添加OA Diagnostic、OADeveloperMode。如果默认的项目属性已经设置,这里就不用设置了。
创建View Objects:HelloVO
该VO用来完成增加和修改。在demo.oracle.apps.cux.hello.server下创建。
Name: HelloVO
创建向导中,勾选 Rows
Populated Programmatically,not Based on a Query.
HelloAM中DataModel,选HelloVO。
修改AM的Java类
在EmpAMImpl.java中加入方法,去调用VO:
public void setHelloVOCheckFlag (String checkFlag)
OAViewObject hVO = (OAViewObject)findViewObject("HelloVO1");
OARow row = (OARow)hVO.first();
if ("on".equals(checkFlag))
row.setAttribute("CheckFlag", true);
else
row.setAttribute("CheckFlag", false);
public void init()
OAViewObject hVO = (OAViewObject)findViewObject("HelloVO1");
if (hVO != null)
if (hVO.getFetchedRowCount() == 0)
hVO.setMaxFetchSize(0);
hVO.executeQuery();
hVO.insertRow(hVO.createRow());
OARow row = (OARow)hVO.first();
row.setAttribute("RowKey", 1);
创建Page:HelloPG
参考下表完成:
参数 | 值 |
---|---|
Name | HelloPG |
Package | demo.oracle.apps.cux.hello.webui |
修改最高层区域
参考下表完成:
参数 | 值 |
---|---|
ID | PageLayoutRN |
Region Style | pageLayout |
AM Definition | oracle.apps.fnd.framework.server.OAApplicationModule |
Window Title | Hello Window Title |
Title | Hello Page Header |
Auto Footer | True |
Form | True |
创建主内容区域
N: 右键PageLayoutRN/New/Region
参考下表完成:
参数 | 值 |
---|---|
ID | MainRN |
Region Style | PageLayout |
创建文本框UserName
N: 右键MainRN/New/Item
参考下表完成:
参数 | 值 |
---|---|
ID | UserName |
Item Style | messageStyledText |
Prompt | Hello |
Length | 20 |
Maximum Length | 50 |
创建Checkbox
N: 右键MainRN/New/Item
参考下表完成:
参数 | 值 |
---|---|
ID | CheckFlag |
Item Style | messageCheckBox |
Initial Value | N |
Checked Value | Y |
Unchecked Value | N |
Initially Checked | False |
Prompt | Display |
Action Type | fireAction |
Event | show |
创建文本框Details
N: 右键MainRN/New/Item
参考下表完成:
参数 | 值 |
---|---|
ID | Details |
Item Style | messageTextInput |
Prompt | Details Information : |
Rendered | $oa.HelloVO1.CheckFlag |
创建控制器
N: 右键MainRN/New/Set New Controller…
参考下表完成:
参数 | 值 |
---|---|
Package | demo.oracle.apps.cux.hello.webui |
Class Name | HelloCO |
实际上是创建类java类HelloCO。修改代码:
1、 添加引用类
import oracle.apps.fnd.framework.OAException;
import java.io.Serializable;
import oracle.apps.fnd.framework.webui.beans.message.OAMessageStyledTextBean;
2、 修改processRequest()
public void processRequest(OAPageContext pageContext, OAWebBean webBean)
super.processRequest(pageContext, webBean);
OAApplicationModule am = pageContext.getApplicationModule(webBean);
//获取当前登录用户名显示在页面上
String userName = pageContext.getUserName();
OAMessageStyledTextBean mstBean = OAMessageStyledTextBean)webBean.findChildRecursive("UserName");
mstBean.setText("Hello " + userName + " !");
am.invokeMethod("init");
3、 修改方法processFormRequest()
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
super.processFormRequest(pageContext, webBean);
OAApplicationModule am = pageContext.getApplicationModule(webBean);
String event = pageContext.getParameter(EVENT_PARAM);
if(event.equals("show"))
String checkFlag = pageContext.getParameter("CheckFlag");
System.out.println(checkFlag);
Serializable[] params = checkFlag;
am.invokeMethod("setHelloVOCheckFlag", params);
4、 右键HelloWorldMainCO.java或其代码内任何区域,Rebuild。
在本地Jdeveloper自带的OC4J服务器中运行
N: 右键HelloPG.xml,运行。
发布到EBS
步骤同“ Oracle OAF 学习小结(2)- 增删改查/LOV/Button/Sequence 的完整案例开发”的发布,每个XML文件,都要import一下,至于功能定义,只要定义HelloPG就可以了。
以上是关于Oracle OAF 学习小结- 字段控制 的完整案例开发的主要内容,如果未能解决你的问题,请参考以下文章