Oracle Apex中如何将JavaScript加载的页项值传递到模态页面
你遇到的问题根源是Oracle APEX中用$s()方法给页项赋值仅修改了客户端内存中的值,没有同步到APEX服务端会话状态,而默认的页面跳转传参会读取会话状态中的值,所以会出现页项显示正常但传参为空的情况。
解决方法
- 方法1:赋值后同步更新会话状态
在你现有JS代码的$s('P15_SOLICITUD_ID',respuesta.idSecuencia);后面追加会话状态更新代码:
// 同步客户端值到服务端会话状态 apex.item( "P15_SOLICITUD_ID" ).setSessionState().done(function() { // 可以在这里执行你的页面跳转逻辑,确保值已经同步完成 });
完成同步后再用默认的页面跳转传参配置就能正常拿到值。
- 方法2:跳转时直接读取客户端值拼接参数
如果不想修改会话状态,可以跳过默认的参数绑定逻辑,直接用JS拼接跳转地址:
// 示例:跳转至16页,将P15_SOLICITUD_ID的值传给16页的P16_SOLICITUD_ID项 const solicitudId = apex.item('P15_SOLICITUD_ID').getValue(); apex.navigation.redirect(`f?p=&APP_ID.:16:&APP_SESSION.::NO:16:P16_SOLICITUD_ID:${solicitudId}`);
这种方式不需要等待会话状态同步,执行效率更高。
- 额外排查点
- 检查P15_SOLICITUD_ID的「会话状态保护」属性,确认没有设置为「不受限制」以外的选项,避免阻止值的同步
- 如果你是用按钮触发跳转,确认按钮的动作设置为「提交页面后跳转」,不要用直接重定向,否则未提交的客户端值不会被传递
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

