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

APEX动态动作赋值后跳转传参为NULL问题求助

解决APEX动态动作赋值隐藏项跳转传参为NULL的问题

方案一:赋值后同步会话状态

动态动作给隐藏项赋值后,必须将值提交到APEX会话状态,否则跳转时系统无法读取这些值。操作步骤:

  • 编辑目标动态动作,在「设置值」(给client_id和test_id赋值)步骤后,新增「执行JavaScript代码」动作,代码如下:
    // 同步client_id到会话状态
    apex.server.process(
        'SYNC_HIDDEN_ITEMS',
        { x01: $v('P1_CLIENT_ID'), x02: $v('P1_TEST_ID') },
        {
            success: function() {
                console.log("隐藏项已同步至会话状态");
            }
        }
    );
    
  • 在页面的「应用程序进程」中创建名为SYNC_HIDDEN_ITEMS的AJAX回调进程,PL/SQL代码如下:
    apex_util.set_session_state('P1_CLIENT_ID', apex_application.g_x01);
    apex_util.set_session_state('P1_TEST_ID', apex_application.g_x02);
    
    注意替换代码中实际的页面项名称(如P1_CLIENT_ID)。

方案二:跳转时直接通过JS传递参数

不依赖会话状态,跳转时直接将隐藏项当前值拼入URL。修改按钮行为:

  • 将按钮「动作」改为「执行JavaScript代码」,代码示例:
    var clientId = $v('P1_CLIENT_ID');
    var testId = $v('P1_TEST_ID');
    // 替换为目标页面编号和接收参数的项名
    window.location.href = apex.util.makeUrl({
        p_page: 2,
        p_items: 'P2_CLIENT_ID,P2_TEST_ID',
        p_values: `${clientId},${testId}`
    });
    

方案三:优化动态动作设置值逻辑

若使用「设置值」动作从数据库取值:

  • 确保「设置类型」选「SQL语句」,并勾选「提交页面项」(需用当前voucher code作为查询条件时);
  • 在「高级」选项中勾选「设置值后提交项到会话状态」(部分APEX版本支持该选项)。

额外检查项

  • 确认隐藏项的「会话状态保护」设为「未受保护」,避免值被拦截;
  • 隐藏项类型选「隐藏」,不要选「显示为文本(仅保存状态)」这类可能影响状态同步的类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 04:22:28