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

APEX中apex_page.get_url传递含冒号复选框值异常求助

解决APEX中apex_page.get_url传递复选框值的问题

问题根源

你遇到的问题是因为复选框的冒号分隔值在手动拼接p_values时,结合JavaScript字符串拼接的转义错误,导致URL参数被截断或语法错误。手动给P8_D加引号转义的方式会破坏apex_page.get_url生成的URL结构,进而引发浏览器语法错误,同时无法正确传递后续参数。

正确解决方案

不要手动拼接p_values的字符串,也不要在值里加额外转义,而是利用APEX内置函数正确处理参数编码,同时规范JavaScript字符串的生成:

方案1:使用apex_util.url_encode处理URL编码

直接传递参数值,让apex_page.get_url自动处理分隔,再用apex_util.url_encode确保URL在JavaScript中可正确解析:

'javascript:window.open('''||apex_util.url_encode(apex_page.get_url(
    p_page => '9',
    p_items => 'P9_A,P9_B,P9_C,P9_D,P9_E',
    p_values => Z.COLUMN_VAL||','||:P8_B||','||:P8_C||','||:P8_D||','||:P8_E,
    p_clear_cache => '9'
))||''', ''_blank'')' as LINKDETAIL

方案2:数组式参数传递(推荐)

避免手动拼接逗号,改用数组形式传递p_items和p_values,APEX会自动处理每个参数的分隔与编码:

'javascript:window.open('''||apex_page.get_url(
    p_page => '9',
    p_items => apex_tvarchar2('P9_A','P9_B','P9_C','P9_D','P9_E'),
    p_values => apex_tvarchar2(Z.COLUMN_VAL, :P8_B, :P8_C, :P8_D, :P8_E),
    p_clear_cache => '9'
)||''', ''_blank'')' as LINKDETAIL

方案3:用apex_util.prepare_url做JavaScript转义

通过apex_util.prepare_url的JAVASCRIPT类型参数,自动完成符合JS语法的转义处理:

'javascript:window.open('||apex_util.prepare_url(
    apex_page.get_url(
        p_page => '9',
        p_items => 'P9_A,P9_B,P9_C,P9_D,P9_E',
        p_values => apex_tvarchar2(Z.COLUMN_VAL, :P8_B, :P8_C, :P8_D, :P8_E),
        p_clear_cache => '9'
    ),
    p_url_type => 'JAVASCRIPT'
)||', ''_blank'')' as LINKDETAIL

为什么之前的转义方式无效

你手动添加的"\""会导致生成的JavaScript字符串出现混乱的引号组合(比如""\""),浏览器无法正确解析,同时破坏了apex_page.get_url生成的URL结构,直接导致参数传递失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:56:15