2011-03-31 142 views
0

Im使用styesheet構建JSF頁面。當我在Eclipse中使用預覽函數時,THey似乎工作,但只要我在IE8上測試它們,它們似乎沒有任何影響。CSS不在瀏覽器上工作,但它在Eclipse上執行

我使用複合視圖來指定頁面的總體佈局,如下所示。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:ui="http://java.sun.com/jsf/facelets"> 
    <head> 
     <link rel="stylesheet" type="text/css" href="/css/masterTemplateCSS/masterTemplateCSS.css" /> 


     <title><ui:insert name="title"></ui:insert></title> 
    </head> 

    <body> 

     <div class="left_Sidebar"> 
      <ui:insert name="leftSidebar"> 

      </ui:insert> 
     </div> 

     <div class="bulk_text"> 
      <ui:insert name="content"> 

      </ui:insert> 
     </div> 

     <div class="foot"> 
      <ui:insert name="footer"> 

      </ui:insert> 
     </div>  

    </body> 
</html> 

然後我嘗試測試它們。

<ui:composition template="/templates/masterTemplate.xhtml"> 

    <ui:define name="title">Create Screen</ui:define> 

    <ui:define name="leftSidebar"> 
     Left sidebar 
    </ui:define> 
    <ui:define name="content"> 

該模板的工作,我相信css路徑是正確的。我也用驗證器測試了css文件,他們都檢查出來。但它仍然可以在實際瀏覽器中工作:S

+0

它可以在Firefox等任何其他瀏覽器中使用嗎? – shanethehat 2011-03-31 09:53:28

+1

當你做一個視圖時,樣式表是否顯示:source?當您在瀏覽器中複製並粘貼該網址時會發生什麼?它在其他瀏覽器中工作嗎? – JohnP 2011-03-31 09:54:47

+0

我發現這個問題,不幸的是它沒有任何意義......似乎通過定義到Css文件「C:\\ ... \ css.css」的絕對路徑使它工作,但我不明白爲什麼給定路徑不會像路徑名一樣檢查路徑名。 無論如何感謝您的迅速回復! – David 2011-03-31 11:48:42

回答

5

您需要了解相對URL的工作原理。 CSS文件的相對URL

<link rel="stylesheet" type="text/css" href="/css/masterTemplateCSS/masterTemplateCSS.css" /> 

開始與一家領先的斜線,所以它是相對於域根和URL 實際上http://localhost:8080/css/masterTemplateCSS/masterTemplateCSS.css

這顯然不會,如果對你的工作web應用程序不在上下文根部署,而是在子上下文路徑上部署,如http://localhost:8080/contextname。 CSS文件應該指向http://localhost:8080/contextname/css/masterTemplateCSS/masterTemplateCSS.css

通過

<link rel="stylesheet" type="text/css" href="#{request.contextPath}/css/masterTemplateCSS/masterTemplateCSS.css" /> 

更換鏈接這樣,它最終會爲/contextname/css/masterTemplateCSS/masterTemplateCSS.css,從而指向正確的絕對URL。

執行不是如您在評論中提到的那樣,將其替換爲磁盤文件系統路徑。當網頁通過互聯網提供時,這根本不起作用。你未來的網頁訪問者確實沒有你自己的本地磁盤文件系統的CSS文件。

相關問題