0

我正在将我的带有 Richfaces 的 Web 应用程序从 3.3.3 版本迁移到 4.1,但我在静态资源(主要是图像和 CSS)方面遇到了一些问题。我知道 JSF2 有一种机制来提供此类资源(将它们全部放在名为“resources”的文件夹下)。对此我有两个问题:

  1. 是否可以将此文件夹更改为另一个文件夹?
  2. CSS中的相对路径会发生什么?我有许多与“背景图像”属性相关联的图像,但 Richfaces 4.1 无法正确解析它们。例如,我以这种方式加载分配在 /resources/css 中的 CSS:

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

calendar.css 包含此类:

.cic {
   background-repeat: no-repeat;
   display: inline-block;
   background-image: url(images/calendar/combined.gif);
}

Richfaces 将 url 解析为

http://nameApp/servletApp/javax.faces.resource/wdCalendar/images/calendar/combined.gif

但我想应该是

http://nameApp/servletApp/resources/css/wdCalendar/images/calendar/combined.gif

提前致谢

4

1 回答 1

0
  1. 是的,您可以更改它,src/main/webapp文件夹(假设这是您项目中的样子)将/your-app在服务器上,您可以从那里使用绝对路径
  2. 那是因为 h:outputStylesheet 将资源放在一种“抽象”文件夹中(我不知道具体情况,但它看起来就是这样)并让它由 servlet 处理,看看样式表链接的输出方式。有几种方法可以解决这个问题

    • 使用绝对路径

    /your-app/resources/css/wdCalendar/images/calendar/combined.gif

    • 或离开“抽象”文件夹的相对路径

    ../resources/css/wdCalendar/images/calendar/combined.gif

    • 或使用 servlet 可以处理的相对路径

    images/calendar/combined.gif.jsf?ln=css/wdCalendar (注意 .jsf 是 web.xml 中定义的默认 servlet 映射,它在您的应用程序中可能看起来不同;它应该看起来与您的样式表链接看起来相同)。ln此外,只要将它放在一起,它是正确的路径,路径的哪一部分在(它可以是空的)中并不重要。

于 2013-02-07T14:47:17.553 回答