Oracle Apex:如何在不提交页面时将选择列表值存入会话状态
Oracle Apex:选择列表值变更时无提交保存会话状态
不用提交页面就能把选择列表的选中值存到会话状态,核心靠动态动作+AJAX回调实现,具体步骤如下:
1. 准备选择列表
确保页面上的选择列表项(示例中用P1_DEPT,请替换为你的实际项名称)配置正常,数据源、显示格式设置无误,无需开启页面提交相关属性。
2. 创建AJAX回调过程
- 进入应用共享组件 → AJAX回调 → 点击创建
- 选择PL/SQL类型,命名为
SAVE_SELECT_VALUE(可自定义) - 在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. 给选择列表添加动态动作
- 回到页面编辑界面,选中目标选择列表项
- 右键选择创建动态动作,配置基础属性:
- 名称:自定义(比如
实时保存选择值) - 事件:
Change(值变更时触发) - 选择类型:
Item - 项目:选中你的选择列表项
- 名称:自定义(比如
- 添加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
相关产品推荐
相关产品推荐

