首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UnmappedResourceHandler无法将CSS中的URL转换为JSF的有效URL。

UnmappedResourceHandler无法将CSS中的URL转换为JSF的有效URL。
EN

Stack Overflow用户
提问于 2013-05-31 06:28:04
回答 1查看 1K关注 0票数 1

这是我的设置:

  • Web的文件夹结构和文件名与UnmappedResourceHandler的javadoc完全相同。
  • UnmappedResourceHandler已在faces-config.xml中注册
  • /javax.faces.resource/*已经映射到web.xml中的facesServlet

style.css是:

代码语言:javascript
复制
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,响应如下:

代码语言:javascript
复制
body {
    background: url("image/background.png");
}

body .test{
    background-image: url("/app/javax.faces.resource/image/background.png?ln=css");
}

我希望CSS中的所有相对URL都将像#{resource}一样转换为JSF的有效URL,这样我就不必再使用#{resource}来引用CSS中的相对URL了,但是backgroundbody选择器的相对URL仍然保持不变。

更新到BalusC的回复:

  1. 如果使用资源库,将?ln=libraryname添加到所有CSS映像中将有效!
  2. 但是,如果不使用资源库,<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/*映射到web.xml中的facesServlet应该会导致JSF生成没有xhtml扩展的style.css链接。
EN

回答 1

Stack Overflow用户

发布于 2013-05-31 11:08:43

您正在使用css作为资源库,如下所示:

代码语言:javascript
复制
<h:outputStylesheet library="css" name="style.css" />

这是不对的。它只是一个文件夹:

代码语言:javascript
复制
<h:outputStylesheet name="css/style.css" />

这将产生/javax.faces.resource/css/style.css URL而不是/javax.faces.resource/style.css?ln=css。否则,您还必须在图像URL中指定它:

代码语言:javascript
复制
background: url("image/background.png?ln=css");

我将更新javadoc以澄清这一点。

另请参阅:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16851005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档