无法阻止< >在oracle apex

时间:2017-01-18 17:24:57

标签: escaping oracle-apex oracle-apex-5

我知道这个问题肯定是在无限时间被问过,但我找不到有效的答案。

我在oracle apex交互式报告中使用了解码语句。我们的想法是,如果值为null,则显示破折号,如果不是,则显示复选标记图像。

在我对报告的SQL查询中:

select "col1",
"col2",
decode (col3, NULL, '-', '<img src="#APP_IMAGES#check.png" alt="check mark" />') "col3"
from "#OWNER#"."table"

在报告中,我看到所有列,其中col3为null我得到一个破折号,但是如果不为null,则打印

<img src="path/to/check.png" alt="check mark" />

看看html它实际打印出来了 &amp; lt&amp; gt而不是&lt;&gt;。

应该是一个简单的修复来逃避这些角色,但我无法弄清楚如何逃避&lt;和&gt;字符。

有趣的是,我得到这个想法的网站对这些字符没有任何问题:http://www.ruleworks.co.uk/apex/howto-decode-doc.asp

1 个答案:

答案 0 :(得分:1)

获得col3属性。在APEX 5中,您将找到一个名为“Escape special characters”的选项。将其切换为“否”,您将看到您的HTML。

但是,请谨慎使用此设置,因为您可以轻松引入XSS(跨站点脚本)。在你的情况下,你不会因为你没有使用用户提供的数据作为col3的一部分,但是很高兴知道。

更好的方法是尝试使用“HTML Expression”字段(也是列的属性)。然后col3可以返回图像,HTML表达式将是:

select ...
     , decode (col3, NULL, 'blank.gif','check.png') col3_flag
       ...

HTML表达式:

<img src="#APP_IMAGES##COL3_FLAG#"/>