2013-02-20 19 views
0

我正在使用JSF 2.0資源管理機制。在/ webapp/resources下,我有3個子文件夾:圖像,腳本,樣式。而在我的模板文件myLayout.xhtml,我引用樣式表如下使用h時輸出的圖像不顯示:outputStylesheet

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

我把我的styles.css文件中的所有我的背景圖片如下:

body { 
      background: #fff url(../images/body_background.png) repeat -x; 
    } 

    #header { 
      background: transparent url(../images/header_bg.png) no-repeat top right; 
    } 

我所有的頁面的Facelets駐留在子文件夾/ webapp/facelets下,而模板文件位於/ webapp/template下。我的facelet page.xhtml參考模板如下:

<ui:compsition .... template="/template/myLayout.xhtml"> 

然後頁面佈局正確,但所有背景圖像都丟失。我檢查了日誌,發現以下錯誤:

java.io.FileNotFoundException: SRVE0190: File not found: /javax.faces.resource/images/body_background.png 
    java.io.FileNotFoundException: SRVE0190: File not found: /javax.faces.resource/images/header_bg.png 

然後我改變從

url(../images/body_background.png) 

在CSS文件中的URL引用 URL(/我

回答

1

需要引用通過EL中的#{resource}獲取CSS圖像資源,以便它能打印正確的JSF資源URL。

body { 
    background: #fff url(#{resource['images/body_background.png']}) repeat -x; 
} 

#header { 
    background: transparent url(#{resource['images/header_bg.png']}) no-repeat top right; 
} 
+0

它的工作原理!非常感謝! – chaoshangfei 2013-02-20 22:20:37

+0

謝謝你提醒我!如果我想添加不同版本的資源,該語法是否仍然有效?所以現在我的圖像文件將位於/ resources/default/1_0/images而不是/ resources/images。 – chaoshangfei 2013-02-22 22:18:56

+0

該庫需要在'#{resource ['default:images/some.png']}'中加前綴。 – BalusC 2013-02-23 03:05:56