这是我的设置:
- 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/*
到facesServlet
inweb.xml
应该会导致 JSF 生成style.css
不带xhtml
扩展名的链接。