0

我正在尝试为APEX_UTIL.PREPARE_URL需要校验和的页面生成 APEX URL,并且我正在尝试将目标页面上的页面项目设置为包含特殊字符的值。对于这个问题,假设我传递的唯一特殊字符是逗号,尽管我的问题似乎适用于所有特殊字符。

根据APEX URL 文档,包含逗号的项目值需要用反斜杠括起来。所以当我建立我的 URL 时,我最终会得到这样的结果:

f?p=112:50:session::::P50_PAGE_ITEM:\123,abc\:

然后我通过这个 URL APEX_UTIL.PREPARE_URL

APEX_UTIL.PREPARE_URL('f?p=112:50:session::::P50_PAGE_ITEM:\123,abc\:')

当我尝试点击返回的链接时,我收到以下错误:

对请求、清除缓存、参数名称和参数值 (...) 计算的校验和与传递给 show 过程的校验和不匹配。

如果我尝试传递一个不包含逗号的值并删除反斜杠,则传递该值没有问题。

如何获取包含反斜杠的 URL 的有效校验和,以便我可以传递包含逗号(和其他特殊字符)的值?

4

1 回答 1

0

APEX_UTIL.PREPARE_URL应该可以很好地处理反斜杠。包含生成的 URL 的区域可能会转义特殊字符,从而导致校验和不匹配。

要测试 的实际输出APEX_UTIL.PREPARE_URL,请尝试在 PL/SQL 动态区域中输出您的 URL。例如:

DECLARE
  l_url VARCHAR2(200) := 'f?p=112:50:session::::P50_PAGE_ITEM:\123,abc\:';
BEGIN
  htp.p('<a href="'||apex_util.prepare_url(l_url)||'">page 52</a>');
END;
于 2019-10-02T13:50:17.367 回答