Oracle APEX 提交时动态设置的表单项值变为NULL问题咨询
问题根因
- 核心原因是前端通过动态动作修改的
P3015_VOL值,没有成功同步到后端会话状态,也没有随页面提交回传到后端处理进程,所以提交阶段读取的还是修改前的旧值(旧值为NULL就会返回NULL),常见触发场景有两类:- 该表单项设置为「仅显示」状态,APEX默认不会把仅显示项的前端值随页面提交回传,即使前端改了值,后端也拿不到。
- 动态动作仅修改了浏览器端的本地值,没有触发值同步逻辑,且提交按钮的配置里没有把
P3015_VOL纳入待提交的页项列表,后端读取会话状态时拿到的还是修改前的NULL值。
解决方案
按优先级逐一排查配置即可解决:
- 调整表单项属性
如果P3015_VOL是仅显示项,打开该项属性的「高级」分组,开启「提交时发送值」开关,开启后仅显示项的前端值也会随提交动作回传到后端。 - 调整动态动作配置
- 如果你用的是动态动作自带的「设置值」动作:确保动作配置里的「提交时发送值」选项为开启状态;如果需要提前同步到会话状态,可以在设置值动作后新增一个空的「执行PL/SQL代码」动作,在「要提交的页项」输入框填入
P3015_VOL即可完成值同步。 - 如果你用的是自定义JS修改值:改用APEX官方API赋值,示例代码如下:
apex.item('P3015_VOL').setValue(33, null, true);
第三个参数传true会自动触发值变更事件和同步逻辑。
- 调整提交按钮配置
打开保存按钮的「提交」动作配置,在「要提交的页项」参数里手动填入P3015_VOL,强制该项的前端值随提交动作一起回传到后端。
内容的提问来源于stack exchange,提问作者Izik
相关产品推荐
相关产品推荐

