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

JSF搭配AdminLTE主题时Font Awesome字体图标404加载失败求助

JSF搭配AdminLTE字体图标404问题修复方案

问题根源

  • JSF的<h:outputStylesheet>标签会自动生成带上下文路径和库参数的资源URL,规则为/[应用上下文]/javax.faces.resource/[资源名]?ln=[库名],你此前修改的/webfonts为站点根路径,没有匹配应用上下文/WebApplication1,也不符合JSF的资源访问规则,因此仍返回404。
  • 你当前页面路径为/WebApplication1/faces/template/tryout.xhtml,相对路径引用会基于/WebApplication1/faces/template/目录查找字体文件,和字体文件实际存放路径不匹配。

修复步骤

步骤1:确认资源目录结构

首先保证你的web资源目录结构符合JSF规范,如下:

src/main/webapp(或WebContent)
└── resources
    └── plugins
        └── fontawesome-free
            ├── css
            │   └── all.min.css
            └── webfonts
                ├── fa-solid-900.woff2
                ├── fa-regular-400.woff2
                ├── fa-solid-900.woff
                ├── fa-regular-400.woff
                ├── fa-solid-900.ttf
                └── fa-regular-400.ttf

步骤2:调整FontAwesome CSS引入方式

不要用<h:outputStylesheet>标签引入FontAwesome的CSS,改为普通link标签配合EL表达式获取应用上下文,将原引入代码:

<h:outputStylesheet library="plugins/fontawesome-free/css" name="all.min.css" />

替换为:

<link rel="stylesheet" href="#{request.contextPath}/resources/plugins/fontawesome-free/css/all.min.css" />

步骤3:还原CSS内的字体引用路径

把你之前修改的/webfonts路径还原为默认的../webfonts即可。此时CSS的访问路径为/WebApplication1/resources/plugins/fontawesome-free/css/all.min.css,CSS内的../webfonts/会被浏览器解析为/WebApplication1/resources/plugins/fontawesome-free/webfonts/,和字体文件实际存放路径完全匹配。

步骤4:验证生效

清理浏览器缓存、重启应用后再次访问页面,控制台不会再报字体文件404错误,图标可正常显示。

备选方案(如果不想修改引入方式)

如果需要保留<h:outputStylesheet>的引入方式,可以将all.min.css内所有字体引用路径统一替换为#{request.contextPath}/resources/plugins/fontawesome-free/webfonts/,同时需要在web.xml中配置JSF处理CSS文件的EL表达式,该方案复杂度较高,优先推荐第一种修复方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:15:02