这是我的设置:
- Web 应用程序的文件夹结构和文件名与UnmappedResourceHandler的 javadoc完全相同
- UnmappedResourceHandler 已经注册在
faces-config.xml /javax.faces.resource/*已经映射到 facesServlet 中web.xml
是style.css:
body {
background: url("image/background.png");
}
body .test{
background-image: url("#{resource['css:image/background.png']}");
}
然后我请求http://localhost:8080/app/javax.faces.resource/style.css?ln=css并且响应是:
body {
background: url("image/background.png");
}
body .test{
background-image: url("/app/javax.faces.resource/image/background.png?ln=css");
}
我希望 CSS 中的所有相对 URL 都将转换为 JSF 的有效 URL,就像#{resource}我不必再使用#{resource}来引用 CSS 中的相对 URL 一样,但选择器background 的相对 URLbody仍然保持不变 。
更新 BalusC 的回复:
如果使用资源库,添加
?ln=libraryname到所有 CSS 图像都可以!但如果不使用资源库,则
<h:outputStylesheet name="css/style.css" />生成<link rel="stylesheet" media="screen" type="text/css" href="/app/javax.faces.resource/css/style.css.xhtml">如果我对此理解正确,则使用UnmappedResourceHandler并映射
/javax.faces.resource/*到facesServletinweb.xml应该会导致 JSF 生成style.css不带xhtml扩展名的链接。