You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从EBS OAF页面调用APEX页面?求正确URL构建方法

问题描述

在EBS表单个性化中调用APEX页面的配置可正常工作:

Function: XX_APEX_PAGE1
Parameters : ='p=100:9999:::::EBS_SESSION,APEX_PAGE_ID,P5_INVOICE_ID:[EBS_SESSION],5,'||:INV_SUM_FOLDER.ATTRIBUTE15

但在自定义OAF页面中通过OALinkBean构造URL调用时无法正常工作,当前代码如下:

String url =
    "RF.jsp"
  + "?function_id=59085"
  + "&resp_id=" + "50838"
  + "&resp_appl_id=" + "200"
  + "&security_group_id=0"
  + "&lang_code=US"
  + "&p=100:9999:::::"
  + "&APEX_PAGE_ID=5" 
  + "&P5_INVOICE_ID=" + attribute15;

OALinkBean b = (OALinkBean)webBean.findChildRecursive("OpenInvoice");      
b.setTargetFrame("_blank");
b.setDestination(url);

问题根源

你错误地将APEX页面的参数(APEX_PAGE_ID、P5_INVOICE_ID)拆分为独立的URL参数,未遵循表单个性化中p参数的复合拼接格式。同时缺少正确传递当前EBS会话的EBS_SESSION值,这是APX页面验证会话合法性的关键参数。

正确的URL构造方案

  1. 获取当前EBS会话标识:通过OAF的pageContext获取当前会话的EBS_SESSION值,替代表单中[EBS_SESSION]的占位符。
  2. 遵循p参数的复合格式:p参数的完整结构为p=APEX应用ID:APEX页面ID:::::参数名列表:参数值列表,参数名和对应值按顺序用逗号分隔,比如EBS_SESSION,APEX_PAGE_ID,P5_INVOICE_ID对应的值为[会话ID],5,[发票ID]。
  3. 动态获取EBS上下文参数:避免硬编码resp_id、resp_appl_id等值,通过pageContext动态获取可适配不同环境和用户权限。

修正后的代码示例

import java.net.URLEncoder;

// 获取当前EBS会话ID
String ebsSession = pageContext.getOASessionContext().getSessionId();
// 对动态参数进行URL编码,防止特殊字符破坏URL结构
String encodedInvoiceId = URLEncoder.encode(attribute15, "UTF-8");

// 构造符合要求的p参数内容
String pParam = "100:9999:::::EBS_SESSION,APEX_PAGE_ID,P5_INVOICE_ID:" + ebsSession + ",5," + encodedInvoiceId;

// 拼接完整URL,动态获取EBS上下文参数
String url = "RF.jsp"
        + "?function_id=59085"
        + "&resp_id=" + pageContext.getResponsibilityId()
        + "&resp_appl_id=" + pageContext.getResponsibilityApplicationId()
        + "&security_group_id=" + pageContext.getSecurityGroupId()
        + "&lang_code=" + pageContext.getLanguage()
        + "&p=" + pParam;

OALinkBean b = (OALinkBean)webBean.findChildRecursive("OpenInvoice");      
b.setTargetFrame("_blank");
b.setDestination(url);

注意事项

  • URL编码:所有动态参数(如发票ID)必须经过URL编码,防止包含&、=、空格等特殊字符导致URL解析错误。
  • 参数结构校验:确保p参数的冒号、逗号位置与表单个性化中的格式完全一致,APEX应用ID、页面ID需与配置保持统一。
  • 权限验证:确认当前用户拥有访问该APEX页面的EBS职责权限,避免因权限不足导致跳转失败。

内容的提问来源于stack exchange,提问作者Bakee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 18:42:33