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

Oracle APEX:数据库数据到Textarea的特殊字符转义处理问题

解决Oracle APEX动态动作PL/SQL设置Textarea值时的HTML实体编码问题

出现这个问题是因为APEX默认会对PL/SQL函数体返回的内容做HTML转义(防止XSS攻击),导致单引号、&等特殊字符被转换为HTML实体(如'、&)。以下是几种可行的解决方法:

方法1:使用APEX内置反转义函数处理返回值

在PL/SQL函数体中,对从数据库取出的内容调用apex_escape.unescape_html(或sys.htf.unescape_sc)进行反转义后再返回,示例代码:

DECLARE
    l_content VARCHAR2(4000);
BEGIN
    -- 从数据库查询获取内容
    SELECT your_column INTO l_content FROM your_table WHERE id = :P1_ID;
    -- 反转义HTML实体后返回
    RETURN apex_escape.unescape_html(l_content);
END;

方法2:改用JavaScript+AJAX设置值(更灵活)

避免APEX自动转义的另一种方式是通过JavaScript直接赋值,步骤如下:

  1. 创建一个AJAX回调过程(在应用构建器的"共享组件"->"AJAX回调"中),命名为GET_TEXTAREA_CONTENT,内容示例:
DECLARE
    l_content VARCHAR2(4000);
BEGIN
    SELECT your_column INTO l_content FROM your_table WHERE id = :P1_ID;
    -- 将内容返回给前端
    apex_json.open_object;
    apex_json.write('content', l_content);
    apex_json.close_object;
END;
  1. 修改动态动作的类型为执行JavaScript代码,代码示例:
apex.server.process('GET_TEXTAREA_CONTENT', {
    x01: apex.item('P1_ID').getValue() // 传递参数(如果需要)
}, {
    success: function(pData) {
        // 直接为Textarea项赋值,无自动转义
        apex.item('P1_TEXTAREA').setValue(pData.content);
    }
});

方法3:关闭特定项的HTML转义(不推荐,存在XSS风险)

如果确认内容是安全的(无恶意代码),可以在Textarea项的属性中关闭转义:

  • 打开Textarea项的编辑页面,找到"安全性"区域
  • 将"转义特殊字符"属性设置为否

注意:此方法会关闭项的XSS防护,仅在内容完全可信时使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 23:24:32