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

Oracle Apex:如何在不提交页面时将选择列表值存入会话状态

Oracle Apex:选择列表值变更时无提交保存会话状态

不用提交页面就能把选择列表的选中值存到会话状态,核心靠动态动作+AJAX回调实现,具体步骤如下:

1. 准备选择列表

确保页面上的选择列表项(示例中用P1_DEPT,请替换为你的实际项名称)配置正常,数据源、显示格式设置无误,无需开启页面提交相关属性。

2. 创建AJAX回调过程

  1. 进入应用共享组件 → AJAX回调 → 点击创建
  2. 选择PL/SQL类型,命名为SAVE_SELECT_VALUE(可自定义)
  3. 在PL/SQL代码区域写入:
BEGIN
  -- 将前端传递的值设置到对应页面项的会话状态
  APEX_UTIL.SET_SESSION_STATE(
    p_name => 'P1_DEPT',
    p_value => APEX_APPLICATION.G_F01(1)
  );
END;

注:APEX_APPLICATION.G_F01是Apex接收前端参数的内置数组,对应后续JS代码中传递的x01参数。

3. 给选择列表添加动态动作

  1. 回到页面编辑界面,选中目标选择列表项
  2. 右键选择创建动态动作,配置基础属性:
    • 名称:自定义(比如实时保存选择值)
    • 事件:Change(值变更时触发)
    • 选择类型:Item
    • 项目:选中你的选择列表项
  3. 添加True动作:
    • 动作类型:Execute JavaScript Code
    • 在代码区域写入:
      apex.server.process(
        'SAVE_SELECT_VALUE', // 对应你创建的AJAX回调名称
        { x01: this.triggeringElement.value }, // 传递当前选中值
        {
          success: function() {
            // 可选:添加成功提示,比如 apex.message.showPageSuccess('值已保存到会话状态');
          }
        }
      );
      

4. 验证效果

运行页面后,变更选择列表的值,可通过以下方式验证会话状态是否更新:

  • 添加一个显示项,将其源设置为目标页面项(如P1_DEPT),并给该显示项添加动态动作,在AJAX回调成功后刷新它,即可看到值实时更新;
  • 创建PL/SQL动态内容区域,调用APEX_UTIL.GET_SESSION_STATE('P1_DEPT'),查看会话状态中的最新值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:25:48