1、向session里添加值
pageContext.putSessionValue(key,value)
2、从session里取值
pageContext.getSessionValue(key)
3、创建二次确认页面
OAException descMesg = new OAException("是否确认删除?");
String noUrl = APPS_HTML_DIRECTORY + "OA.jsp?page=/cisdi/oracle/apps/ofa/asm/webui/WarehouseInPG";
OADialogPage dialogPage =
new OADialogPage(OAException.CONFIRMATION, descMesg, null, "", noUrl);
dialogPage.setOkButtonItemName("OkButton");
dialogPage.setOkButtonToPost(true);
dialogPage.setNoButtonToPost(true);
dialogPage.setPageTitle("删除");
dialogPage.setPostToCallingPage(true);
pageContext.redirectToDialogPage(dialogPage);
4、判断事件
public void processFormRequest(OAPageContext pageContext,OAWebBean webBean) {
String event = pageContext.getParameter(EVENT_PARAM);
if ("事件名".equals(event)){
//TODO
}
}
5、判断按钮
public void processFormRequest(OAPageContext pageContext,OAWebBean webBean) {
if (pageContext.getParameter("按钮名") != null){
//TODO
}
}
6、信息提示
OAException tipMessage = new OAException("提示信息", OAException.INFORMATION);
pageContext.putDialogMessage(tipMessage);
7、页面跳转
String strUrl = "OA.jsp?page=/cisdi/oracle/apps/ofa/asm/webui/DisoSubmitPG&AssetId=" + strAssetId;
pageContext.forwardImmediately(strUrl, null, OAWebBeanConstants.KEEP_MENU_CONTEXT, null, null, true, "N");
8、传参
1)界面部门:
VO界面Binding Style 设成 Oracle Positional
2)sql部分:
SELECT *
FROM PA_PROJECTS_ALL T
WHERE T.NAME = :1
AND T.SEGMENT1 = :2
3)代码部分:
PurPackPlanVOImpl vo = (PurPackPlanVOImpl)am.findViewObject("PurPackPlanVO1");//获取vo
vo.setWhereClause(null);
vo.setWhereClauseParam(0, projectNumber);//设置第一个参数
vo.setWhereClauseParam(1, lotNumber);//设置第二个参数
vo.executeQuery();//查询
9、获取ORG_ID
FND_PROFILE.VALUE('ORG_ID');--这种发现是在oaf的vo的sql中(获取当前职责的OU)
FND_GLOBAL.ORG_ID;--这种发现是在存储过程的sql的
10、多个lov清空值
问题:第一个lov选择了值之后,再选择第二个lov,第一个里的值就会被清空掉。
解决办法:将readOnly属性设置为动态的${oa.current.ReadOnlyStatus}
原理:未知
11、给messageStyleText类型的item赋值
//findIndexedChildRecursive是获取第一个与名称匹配的被索引的子对象
//如果子对象为null,可以用findChildRecursive方法
OAMessageStyledTextBean PoDocBean = (OAMessageStyledTextBean)webBean.findIndexedChildRecursive("PoType");//获取这个item
if (PoDocBean != null) {//判断不为null
PoDocBean.setAttributeValue(OAMessageTextInputBean.READ_ONLY_ATTR, Boolean.TRUE);//只读
PoDocBean.setText(pageContext, this.PoDoc);//设置值
}
12、隐藏按钮
//hideWebBean(oracle.apps.fnd.framework.webui.beans.OAWebBean p1, java.lang.String p2)
//oracle.apps.po.common.webui.ClientUtil;
ClientUtil.hideWebBean(paramOAWebBean, "RequiredFieldRN");
13、打印日志
//oracle.apps.pa.util.webui.Debug
Debug.write(paramOAPageContext, this, "测试日志" , 3);
查看日志的时候需要打开诊断
14、使flex组件显示在页面上
一般会遇到pg上有flex组件,弹性域也是设置好的,但flex组件就是不显示,就可以这样做
OADescriptiveFlexBean dffBean = (OADescriptiveFlexBean)createWebBean(paramOAPageContext,DESCRIPTIVE_FLEX_BEAN, null, "PO_DISTRIBUTIONS"); //弹性域名
paramOAWebBean.addIndexedChild(dffBean);
dffBean.setAttributeValue(OAWebBeanConstants.VIEW_USAGE_NAME,"PoDistributionsMergeVO");//VO名
dffBean.setAttributeValue(OAWebBeanConstants.FLEXFIELD_APPLICATION_SHORT_NAME, "PO");//应用产品名
dffBean.setAttributeValue(OAWebBeanConstants.REGION_APPLICATION_ID, new Integer(0));
dffBean.setAttributeValue(OAWebBeanConstants.FLEXFIELD_NAME,"PO_DISTRIBUTIONS"); //弹性域名
15、oaf跳转form页面
//form:responsibilityApplicationShortName:responsibilityKey:securityGroupKey:functionName:param1=value1 param2=value2 param3=value3
//responsibilityKey在FND_RESPONSIBILITY_VL查询,securityGroupKey为STANDARD,functionName就是form的名字
String destination = "form:"+appShortName+":"+messageBuffer+":STANDARD:CUXAPSTP:DOC_NUM=".concat(poNum);
pageContext.forwardImmediatelyToForm(destination);
16、oaf调用存储过程
OAApplicationModule am = paramOAPageContext.getApplicationModule(paramOAWebBean);
OADBTransaction transaction = am.getOADBTransaction();
CallableStatement cs = transaction.createCallableStatement("call apps.CUX_PO_WF_PKG.INIT_APPROVER(?,?,?)", 1);
try {
cs.setInt(2, poHeaderIdNumber);
cs.setInt(3, poLineIdNumber);
cs.registerOutParameter(1, 12);//这里的12指的是varchar,具体可以看java.sql.Types类
cs.execute();
String longDescription = cs.getString(1);
cs.close();
} catch (Exception e) {
Debug.write(paramOAPageContext, this, "调用函数报错" + e.toString(), 3);
}
17、个性化页面的隐藏和取消隐藏
1):
2):
3):
4):如果需要恢复,还是按照上面的步骤来设置,如果没法弄的话,还有一个地方可以打开个性化页
4-1):进入功能管理员职责
4-2):
4-3):接下来的操作就和上面一样了
18、添加关于此页、诊断等
1):打开forms界面,责任为系统管理员,profile->系统
19、个性化页,除了进入当前页面,点击个性化页,还有一个地方可以设置
选择功能管理员->点击个性化->输入文档路径(也就是pg的路径)->点击查找->查询出来结果后点击个性化页
20、点击lov的事件
点击时事件名叫lovPrepare,点击结束后事件名叫lovUpdate