如何彻底移除ThingWorx默认Button Widget并替换为自定义组件?
直接删除文件目录Thingworx/Common/thingworx/widgets/button确实没法彻底解决问题,因为ThingWorx的系统内置组件会在服务器启动时被缓存,而且组件的注册信息还存在系统元数据里。试试下面这些实操步骤来搞定:
清理服务器端核心缓存
先停掉ThingWorx服务器,找到服务器安装目录下的ThingworxStorage/cache文件夹,删掉里面所有内容——这会清除系统编译后的组件缓存、元数据缓存等核心缓存文件。另外也可以同步清理ThingworxStorage/temp目录下的临时文件。通过Composer控制默认组件的可见性
打开ThingWorx Composer,从左侧导航进入Modeling > Widgets页面,找到默认的Button Widget:- 如果是可编辑的系统组件,直接编辑它的属性,把
Visible in IDE选项改成false,这样它就不会在IDE组件面板里显示了; - 如果是不可编辑的内置组件,就创建一个Widget Override,指向你的自定义Button组件。这样IDE会优先加载你的自定义组件,同时默认组件会被覆盖隐藏。
- 如果是可编辑的系统组件,直接编辑它的属性,把
给自定义组件设置更高优先级
在你的自定义Button组件的widget.json配置文件里,设置一个更高的优先级值(比如"priority": 100,默认组件的优先级通常较低),这样在IDE组件面板中,你的自定义组件会排在最前面,甚至直接覆盖默认组件的展示逻辑。重启服务器+强制清理浏览器缓存
重启ThingWorx服务器让所有配置和缓存清理生效,然后打开IDE时用Ctrl+Shift+R(Windows/Linux)或Cmd+Shift+R(Mac)强制刷新页面,彻底清除浏览器端的组件资源缓存。最后验证效果
重启后打开IDE组件面板搜索Button,如果只显示你的自定义组件,就说明操作生效了。要是还能看到默认组件,检查下webapps/ROOT/thingworx/widgets目录下有没有残留的Button组件文件,或者有没有其他缓存目录没清理到位。
提醒:直接删除系统内置组件可能会导致依赖它的既有应用出错,优先用Widget Override或隐藏默认组件的方式,比硬删文件更稳妥。
内容的提问来源于stack exchange,提问作者Sayonara

