2017-01-18 44 views
0

我知道這個問題一定是被問過無數次,但我找不到一個有效的答案。無法阻止在oracle頂點中< >的替換

我在oracle apex交互式報告中使用解碼語句。這個想法是,如果該值爲空,顯示一個破折號,如果不是,顯示一個複選標記圖像。

在我的SQL查詢的報告我有:

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

在報告中,我看到所有列,其中COL3爲空,我得到一個破折號,但如果不爲空,它打印

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

查看HTML它的實際打印出 & LT & GT,而不是<>。

應該是一個簡單的修復來逃避這些字符,但我不知道如何逃避<和>字符。

有趣的是,在那裏我得到這個想法的網站上有這些字符沒有問題:http://www.ruleworks.co.uk/apex/howto-decode-doc.asp

+0

在'col3'列的屬性,你有**無處可逃特殊字符= **? –

回答

1

到了COL3屬性。在APEX 5中,您會找到一個名爲「轉義特殊字符」的選項。切換到「否」,你會看到你的HTML。

但是,請小心使用此設置,因爲您可以輕鬆引入XSS(跨站點腳本)。在你的情況下,你不會因爲你沒有使用用戶提供的數據作爲col3的一部分,但很高興知道。

更好的方法是嘗試使用「HTML表達式」字段(也是列的屬性)。然後COL3可以返回的圖像和HTML表達應該是:

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

HTML表達:

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

豪爾赫這是魔術,謝謝!欣賞XSS技巧! – zee

相關問題