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

如何获取Oracle Apex日历选中日期且无反斜杠?

解决Oracle Apex日历选中日期传递时带反斜杠的问题

我之前也碰到过一模一样的问题——APEX在自动传递日历选中日期时,会对日期里的特殊字符自动转义,导致出现多余的反斜杠,甚至还会触发乱码。这里给你两个靠谱的解决思路:

方法1:用JavaScript手动处理日期并构造URL

直接通过动态动作的JS代码接管日期的获取和传递,完全避开APEX的自动转义逻辑,这是最彻底的方案:

  1. 给你的日历组件添加一个动态动作,触发条件选「Date Selected」(日历的日期选中事件)。
  2. 动作类型选「Execute JavaScript Code」,输入以下代码:
// 获取选中的原始日期值
var rawDate = apex.item("APEX$NEW_START_DATE").getValue();
// 把日期转成你需要的格式(比如DD-MM-YYYY),这里手动控制格式避免转义
var dateObj = new Date(rawDate);
var formattedDate = `${String(dateObj.getDate()).padStart(2, '0')}-${String(dateObj.getMonth() + 1).padStart(2, '0')}-${dateObj.getFullYear()}`;
// 构造目标URL,用encodeURIComponent确保日期正确传递
var targetUrl = `f?p=&APP_ID.:9:&SESSION.::NO:RP:P9_START:${encodeURIComponent(formattedDate)}`;
// 关闭对话框并返回处理后的URL(如果是弹窗场景)
apex.navigation.dialog.close(true, targetUrl);

这段代码完全由你控制日期的格式和传递过程,不会让APEX自动添加反斜杠。

方法2:在目标页面兜底清除反斜杠

如果前端处理有顾虑,也可以在接收日期的页面(页面9)做兜底处理:

  1. 编辑P9_START项,找到「计算」属性。
  2. 计算类型选「PL/SQL表达式」,输入:
REPLACE(:P9_START, '\', '')
  1. 设置计算时机为「Before Header」,确保页面加载前就把反斜杠清理掉。

为什么你之前的尝试无效?

你直接引用&APEX$NEW_START_DATE.的写法,会触发APEX的自动转义机制——它会对变量里的特殊字符(比如日期分隔符)添加反斜杠。哪怕你手动加反斜杠,也会和自动转义的内容冲突,最后就出现了乱码的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:57:26