APEX Tree区域设置Escape Special Characters为No后无法加粗文本如何解决
问题原因
Oracle APEX的Tree区域自带的Escape Special Characters选项存在组件适配限制,该配置仅对报表类原生组件生效,Tree组件底层基于第三方jsTree库实现,默认会强制转义所有节点文本中的HTML标签,APEX没有将区域的转义开关同步到jsTree的初始化参数中,因此你之前的写法无法生效,属于组件封装的已知特性,不是操作错误。
可行解决方法
方法1:开启jsTree的HTML渲染权限(适配你现有写法)
- 先修正SQL语句中的HTML语法错误,你之前写的标签带多余空格,会导致解析失败,修改后示例:
-- 自定义类写法 '<div class="TFLBOLD">'||A.NAME||' - Nivel - '||level||'</div>' -- 或者<b>标签写法 '<b>'||A.NAME||' - Nivel - '||level||'</b>'
- 进入Tree区域的属性面板,找到「高级」→「JavaScript初始化代码」,填入以下配置:
function(options) { options.jstreeOptions.core = options.jstreeOptions.core || {}; options.jstreeOptions.core.html_titles = true; return options; }
- 保存页面刷新即可,你的HTML标签会正常渲染生效。
方法2:自定义类实现(更易维护)
如果不想在SQL中硬编码HTML,可以用节点属性传递的方式实现:
- 调整Tree的查询语句,新增自定义类返回列:
select A.ID as id, A.PARENT_ID as parent_id, A.NAME||' - Nivel - '||level as name, -- 符合你的判定条件时返回加粗类,否则返回空 case when [你的条件] then 'TFLBOLD' else null end as a1_class from [你的表名] A start with [根节点条件] connect by prior A.ID = A.PARENT_ID
注:
a1_class是APEX Tree固定的节点类属性别名,不可修改
- 在页面的「内联CSS」中添加样式规则:
.TFLBOLD a { font-weight: bold !important; }
- 不需要调整转义开关,保存刷新即可生效。
内容的提问来源于stack exchange,提问作者P6 Gamer
相关产品推荐
相关产品推荐

