Oracle APEX如何实现文本域校验 点击按钮弹出错误/成功提示
Oracle APEX 点击按钮提示实现方案
你找不到ADD_ERROR.ADD_ERROR包的核心原因是包名书写错误:APEX内置的页面错误抛出能力属于APEX_ERROR包,add_error是该包下的存储过程,不存在ADD_ERROR这个独立包,所有APEX 5.0及以上版本都自带该包,无需额外安装。
以下提供两种可直接落地的实现方案:
方案1:后端PL/SQL直接实现(推荐)
直接修改按钮绑定的PL/SQL逻辑,在代码中完成校验、错误抛出、成功提示全流程,代码如下:
BEGIN -- 文本域空值校验 IF :textarea1 IS NULL THEN -- 抛出页面顶部错误提示 apex_error.add_error( p_message => '文本域字段不能为空', p_display_location => apex_error.c_inline_in_notification ); ELSE -- 执行邮件发送逻辑 APEX_MAIL.SEND( p_from => 'alice@example.com', p_to => 'bob@example.com', p_subj => 'Email from Oracle Autonomous Database', p_body => 'Sent using APEX_MAIL' ); -- 立刻推送邮件队列,省略该步邮件会按系统定时任务延迟发送 apex_mail.push_queue; -- 配置发送成功提示 apex_application.g_print_success_message := '邮件发送成功'; END IF; END;
该方案注意事项:
- 按钮的提交行为需配置为页面提交,否则页面不会重新渲染提示内容
p_display_location参数可调整提示展示位置:传apex_error.c_inline_in_notification会在页面顶部展示通知条,传apex_error.c_on_error_page会跳转到独立错误页,按需选择即可
方案2:前端校验+后端发邮件(适配老版本APEX)
如果你的APEX版本过低确实无法调用APEX_ERROR包,可通过动态Action拆分前后端逻辑实现,步骤如下:
- 给发送按钮新增「点击」触发的动态Action,第一个动作为「执行JavaScript代码」,做前端空值校验:
// 获取文本域值并去除首尾空格 const textareaContent = $v('P1_TEXTAREA1').trim(); if (!textareaContent) { // 展示页面错误提示 apex.message.showErrors({ type: "error", location: "page", message: "文本域字段不能为空", unsafe: false }); // 阻断后续发邮件逻辑执行 apex.da.cancelAction(); }
- 在上述JS动作之后新增第二个动作,类型为「执行PL/SQL代码」,写入邮件发送逻辑:
BEGIN APEX_MAIL.SEND( p_from => 'alice@example.com', p_to => 'bob@example.com', p_subj => 'Email from Oracle Autonomous Database', p_body => 'Sent using APEX_MAIL' ); apex_mail.push_queue; END;
- 给PL/SQL动作新增「成功时执行」的JavaScript回调,展示发送成功提示:
apex.message.showPageSuccess('邮件发送成功');
内容的提问来源于stack exchange,提问作者kiric8494
相关产品推荐
相关产品推荐

