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
相关产品推荐
相关产品推荐

