使用h:outputStylesheet,我可以在HTML头部分嵌入CSS资源,但我如何为favicon图像资源构建<link>
,该资源渲染HTML,如本例所示:
HTML输出:
<head>
...
<link rel="icon" type="image/png" href="favicon.png" />
...
</head>
图像资源位于<web>/resources/images
中。
如果我在JSF模板中使用直接的HTML代码,如href="/resources/images/favicon.png"
,则找不到资源-导航到/resources/images/favicon.png会导致错误
/resources/images/favicon.png/index.jsf未找到
(我在web.xml中将index.jsf设置为索引页,这可能解释了这条路径)
您的web应用程序显然是在非空上下文路径上运行的。前导斜杠/
会将您带到域根。使用#{request.contextPath}
动态内联上下文路径。
<link rel="shortcut icon" type="image/png" href="#{request.contextPath}/resources/images/favicon.png" />
(注意,我也修复了rel
,使其与跨浏览器兼容)
href="/resources/images/favicon.png"
实际上是在服务器的根目录中查找http://localhost/resources/images/favicon.png而不是在您的web应用程序目录中。
您的href位置需要包括web应用程序目录href="/webappname/resources/images/favicon.png"
http://localhost/webappname/resources/images/favicon.png
如果你的.xhtml文件和你的resources文件夹在同一个目录中,那么删除当前的正斜杠也应该有效。href="resources/images/favicon.png"