Oracle APEX交互式报表中带自定义图片的Likert量表LOV显示问题
Oracle APEX交互式报表Likert量表LOV图片显示问题解决与组件推荐
一、解决图片显示为文本的方案
1. 关闭列的HTML转义
APEX默认会转义列输出中的HTML标签,导致图片代码被当成文本显示。需要在交互式报表的列属性中关闭转义:
- 编辑交互式报表,找到目标列的属性设置
- 切换到「Security」标签页
- 将「Escape Special Characters」设置为 No
2. 修改APEX_ITEM.SELECT_LIST_FROM_QUERY参数
该函数默认会转义HTML内容,需显式添加P_ESCAPE => FALSE参数,让HTML标签正常解析。修改后的代码如下:
APEX_ITEM.SELECT_LIST_FROM_QUERY( P_IDX => 1, P_VALUE => a.answer_number, --- 你的列名 P_QUERY => ' SELECT CASE level WHEN 1 THEN ''<img class="origin_image" src="#WORKSPACE_FILES#1.PNG" width="10px" height="10px" >'' WHEN 2 THEN ''<img class="origin_image" src="#WORKSPACE_FILES#2.PNG" width="10px" height="10px">'' WHEN 3 THEN ''<img class="origin_image" src="#WORKSPACE_FILES#3.PNG" width="10px" height="10px">'' WHEN 4 THEN ''<img class="origin_image" src="#WORKSPACE_FILES#4.PNG" width="10px" height="10px">'' WHEN 5 THEN ''<img class="origin_image" src="#WORKSPACE_FILES#5.PNG" width="10px" height="10px">'' END as d, level as r FROM DUAL CONNECT BY level <= 5;', P_ESCAPE => FALSE -- 新增此参数关闭HTML转义 )
3. 验证图片路径有效性
确认图片已正确上传到工作区文件存储,路径中的#WORKSPACE_FILES#变量能被APEX正确解析。如果是应用专属文件,可替换为#APP_FILES#路径。
二、推荐组件
1. 交互式网格(Interactive Grid)原生Rating列
如果可以切换到交互式网格(比交互式报表更灵活),APEX 22.2及以上版本支持原生的Rating列类型:
- 新建交互式网格,添加目标列后,将列类型设置为「Rating」
- 在列属性中可自定义评分数量、图标样式(支持自定义图片或内置图标),无需手写代码即可实现Likert量表效果,稳定性更高。
2. APEX应用商店插件
可在Oracle APEX应用商店中搜索「Likert Scale」或「Rating Picklist」类插件,这些插件已封装好Likert量表的UI和交互逻辑,直接导入应用即可使用,减少自定义代码的维护成本。
内容的提问来源于stack exchange,提问作者Faezeh_Ebrahimi
相关产品推荐
相关产品推荐

