You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何classic主题的sjTree组件无法正常工作?如何修复相关报错?

修复sjTree classic主题加载失败及JS错误方案

问题描述

使用sjTree标签设置jstreetheme="classic"时组件无法正常工作,标签代码如下:

<sjt:tree name="searchtree"
id="jsonTree" 
href="%{treeDataUrl}"
formIds="formsearch"
jstreetheme="classic"
onCompleteTopics="setImagesSize"
onClickTopics="selectTreeItem"
showThemeDots="true"
showThemeIcons="true"
/>

控制台出现两个错误:

错误1:
jquery-2.2.4.min.js:3 GET http://localhost:8080/seswinlite/struts/js/jstree/themes/classic/style.css net::ERR_ABORTED 404 (Not Found)

错误2:
base.js:813 Uncaught TypeError: Cannot read properties of undefined (reading 'style')
at HTMLDocument. (base.js:813:58)
at HTMLDocument.dispatch (jquery-2.2.4.min.js:3:7537)
at r.handle (jquery-2.2.4.min.js:3:5620)
at Object.trigger (jquery-2.2.4.min.js:4:4818)
at HTMLDocument. (jquery-2.2.4.min.js:4:5328)
at Function.each (jquery-2.2.4.min.js:2:2861)
at n.fn.init.each (jquery-2.2.4.min.js:2:845)
at n.fn.init.trigger (jquery-2.2.4.min.js:4:5304)
at n.fn.init. (jquery.subscribe.min.js?s2j=4.0.3:4:376)
at Function.each (jquery-2.2.4.min.js:2:2861)

修复步骤

  • 解决404资源缺失问题

    1. 检查项目中struts/js/jstree/themes/classic/路径下是否存在style.css及配套主题资源(如图标、点标记图片)。
    2. 若文件缺失,从对应版本的struts2-jquery-plugin包中提取classic主题的完整文件(包含style.css和themes/classic下的所有资源),放置到项目的对应路径中。确保插件版本与项目中使用的一致,避免兼容性问题。
    3. 验证路径可访问性:直接在浏览器输入http://localhost:8080/seswinlite/struts/js/jstree/themes/classic/style.css,确认能正常加载。若无法访问,调整资源放置路径或服务器的静态资源映射规则。
  • 修复TypeError错误
    这个错误是由于主题样式未加载导致jstree DOM元素未正确渲染,后续JS代码无法读取元素的style属性。解决完上述404问题后,该错误通常会自动消失。若仍存在:

    1. 检查setImagesSize和selectTreeItem这两个topic对应的处理函数,确保它们在jstree组件完全初始化后再执行操作。
    2. 可在处理函数中添加DOM存在性判断,比如先通过$("#jsonTree").length确认树元素已加载,再执行相关样式操作。

内容的提问来源于stack exchange,提问作者Imad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 23:00:54