我正在使用Richfaces将我的Web应用程序从3.3.3版迁移到4.1但我在静态资源(主要是图像和CSS)方面遇到了一些问题。我知道JSF2有一种机制来提供这种资源(将它们放在一个名为'resources'的文件夹下)。关于这一点,我有两个问题:
CSS中的相对路径会发生什么?我有许多与'background-image'属性相关联的图像,但Richfaces 4.1无法正确解析它们。例如,我以这种方式加载我的CSS,在/ resources / 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将网址解析为
http://nameApp/servletApp/javax.faces.resource/wdCalendar/images/calendar/combined.gif
但我认为它应该是
http://nameApp/servletApp/resources/css/wdCalendar/images/calendar/combined.gif
提前致谢
答案 0 :(得分:0)
src/main/webapp
文件夹(假设它在项目中的样子)将在服务器上变为/your-app
,您可以使用那里的绝对路径那是因为h:outputStylesheet将资源放在一个“抽象”文件夹中(我不知道具体信息,但这就是它的样子)并让它由servlet处理,看看方式样式表链接输出。这有几种方法
/your-app/resources/css/wdCalendar/images/calendar/combined.gif
../resources/css/wdCalendar/images/calendar/combined.gif
images/calendar/combined.gif.jsf?ln=css/wdCalendar
(注意.jsf是web.xml中定义的默认servlet映射,它在您的应用程序中可能看起来不同;它应该与样式表链接看起来相同)。此外,路径的哪一部分在ln
(它可以为空)并不重要,只要它是一个正确的路径,如果你把它放在一起。