1

这是我的设置:

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 的回复:

  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/*facesServletinweb.xml应该会导致 JSF 生成style.css不带xhtml扩展名的链接。

4

1 回答 1

1

You're using css as a resource library as in:

<h:outputStylesheet library="css" name="style.css" />

This is not right. It's just a folder:

<h:outputStylesheet name="css/style.css" />

This will produce /javax.faces.resource/css/style.css URL instead of /javax.faces.resource/style.css?ln=css. You've otherwise to specify it in the image URL as well:

background: url("image/background.png?ln=css");

I will update the javadoc to clarify that more.

See also:

于 2013-05-31T11:08:43.110 回答