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

Oracle APEX 21:如何区分页面提交与直接链接访问?

解决Oracle APEX 21区分直接链接访问与Submit提交的问题

针对你需要在直接通过f?p=...链接访问页面时清除会话状态,而点击Submit按钮提交时保留会话状态的需求,推荐以下两种可靠方案:

方案一:通过HTTP请求方法区分

直接链接访问页面属于GET请求,而Submit按钮提交表单属于POST请求,可利用这一差异做判断:

  • 在目标页面的Before Header区域添加一个PL/SQL流程
  • 设置流程条件为HTTP Request Method is GET
  • 在PL/SQL代码框中编写清除会话状态的逻辑,示例:
    -- 清除当前页面所有项的会话状态
    APEX_UTIL.CLEAR_PAGE_CACHE(:APP_PAGE_ID);
    
    -- 若只需清除特定项,可单独设置:
    -- APEX_UTIL.SET_SESSION_STATE('P1_YOUR_ITEM_NAME', NULL);
    

方案二:给Submit按钮设置自定义Request值

默认Submit按钮未配置Request属性导致:REQUEST为空,手动配置后可精准区分:

  1. 编辑页面上的Submit按钮,在Request属性栏中输入自定义值(例如SUBMIT_FORM)
  2. 在目标页面的Before Header区域添加两个分支流程:
    • 分支1:条件设置为:REQUEST IS NULL,执行清除会话状态的PL/SQL代码(同方案一)
    • 分支2:条件设置为:REQUEST = 'SUBMIT_FORM',无需执行任何清除操作,直接保留会话状态

注意:之前尝试的“Redirect Page to this Application”方案不可行,因为重定向会将POST请求转为GET,导致表单新值丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:05:06