Richfaces 4.x的静态资源

时间:2013-02-07 11:01:27

标签: richfaces

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

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

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

  3. calendar.css包含此类:

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

    Richfaces将网址解析为

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

    但我认为它应该是

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

    提前致谢

1 个答案:

答案 0 :(得分: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(它可以为空)并不重要,只要它是一个正确的路径,如果你把它放在一起。