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

如何通过按钮URL在Oracle Fusion中传递用户ID至Oracle APEX

问题描述

我有一个Oracle APEX应用,主页URL为:

https://oracleapex.com/ords/r/leen_test/test3/home

该页面包含一个名为P1_NEW的页面项。

我在Oracle Fusion中创建了一个按钮,用于重定向用户到上述APEX页面,需求是通过URL传递当前Oracle Fusion用户ID到APEX应用,让P1_NEW接收该值,从而筛选显示仅与登录用户相关的数据。

但点击按钮后生成的URL为:

https://oracleapex.com/ords/r/leen_test/test3/home?P1_NEW=

P1_NEW的值为空,原因是该场景下Oracle Fusion不支持#{UserId}这类EL表达式。

请问在Oracle Fusion中,将当前用户ID(或人员ID)通过URL正确传递至Oracle APEX页面并让APEX页面项接收的合规方法是什么?


解决方案

方法1:通过Groovy脚本动态构造跳转URL

在Oracle Fusion的按钮配置中,用Groovy表达式动态拼接包含用户ID的APEX链接,这是该场景下最直接的合规方案:

  • 进入按钮的属性编辑界面,找到「行为」分类下的「目标URL」字段
  • 输入Groovy表达式获取当前用户信息并拼接URL:
    • 若传递登录用户名:
      "https://oracleapex.com/ords/r/leen_test/test3/home?P1_NEW=" + adf.context.securityContext.userName
      
    • 若传递人员ID(需关联HR人员记录):
      def personId = adf.context.securityContext.user.getPrincipal().getAttribute("personId")
      "https://oracleapex.com/ords/r/leen_test/test3/home?P1_NEW=" + personId
      

方法2:利用Fusion页面绑定变量传递用户ID

如果需要在多个组件复用用户ID参数,可通过绑定变量实现:

  1. 在Fusion页面的绑定层(PageDef.xml)中创建绑定变量(例如bind_userId),设置其值为Groovy表达式(如adf.context.securityContext.userName)
  2. 在按钮的目标URL中引用该绑定变量,格式为${bind.variableName}:
    https://oracleapex.com/ords/r/leen_test/test3/home?P1_NEW=${bind.bind_userId}
    

APEX端接收验证

确保APEX页面的P1_NEW项配置正确:

  • 进入APEX应用主页编辑界面,找到P1_NEW项
  • 设置其「来源」为「URL参数」,参数名称填写P1_NEW
  • 若APEX启用了会话状态保护,需将P1_NEW添加到参数白名单中,避免参数被拦截

内容的提问来源于stack exchange,提问作者Malek Raed 2001

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 14:52:09