2013-03-01 64 views
0

我想第一次使用JSF Facelet模板/ Facelet模板客戶端。我正在用Netbeans 7.2.1創建模板和模板客戶端。當我運行創建的JSF項目並調用http://localhost:8080/jpaweb/template.xhtml時,我可以看到模板樣式,但是當我調用客戶端模板http://localhost:8080/jpaweb/client.xhtml時,我看到純文本沒有樣式。這兩個文件都在同一個目錄中,並由Netbeans嚮導創建。請幫我解決這個問題。JSF 2模板本身顯示樣式,但模板客戶端顯示純文本沒有樣式

的template.xhtml

<?xml version='1.0' encoding='UTF-8' ?> 
<!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" 
     xmlns:h="http://java.sun.com/jsf/html"> 

    <h:head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
     <link href="./resources/css/default.css" rel="stylesheet" type="text/css" /> 
     <link href="./resources/css/cssLayout.css" rel="stylesheet" type="text/css" /> 
     <title>Facelets Template</title> 
    </h:head> 

    <h:body> 


     <div id="top" class="top"> 
      <ui:insert name="top">Top</ui:insert> 
     </div> 
     <div> 
      <div id="left"> 
       <ui:insert name="left">Left</ui:insert> 
      </div> 
      <div id="content" class="left_content"> 
       <ui:insert name="content">Content</ui:insert> 
      </div> 
     </div> 
    </h:body> 

</html> 

client.xhtml

<?xml version='1.0' encoding='UTF-8' ?> 
<!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"> 

    <body> 

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

      <ui:define name="top"> 
       Welcome, to my website 
      </ui:define> 

      <ui:define name="left"> 
       My links 
      </ui:define> 

      <ui:define name="content"> 
       This page is created for testing 
      </ui:define> 

     </ui:composition> 

    </body> 
</html> 

如果您已經安裝了NetBeans創建JSF項目和JSF的模板和模板客戶端會得到你這樣的結果。我也在Netbeans 1.7.0中嘗試過。同樣的問題。

編輯:我運行的頁面不像http://localhost:8080/jpaweb/client.xhtml,但像http://localhost:8080/jpaweb/faces/client.xhtml它的工作。我的項目中沒有「faces」目錄。我們是否必須爲所有JSF鏈接添加「faces」?

編輯2:我認爲NetBeans會自動配置所有jsf文件保存在faces目錄中,即使在我的項目中沒有這樣的目錄。在項目屬性 - >框架 - > JavaServer Faces - >配置中有字段JSF Servlet URL模式,賦值爲/ faces/*。我認爲這意味着必須調用jsf文件,就好像它位於faces目錄中一樣。試圖迫使它工作,因爲它出現在我的項目中是一個錯誤:)

+3

爲了更好地理解具體問題,一些代碼將會很有幫助。請確保您發佈了儘可能小的代碼片段,以便通過將所有設置爲默認值的項目複製到完全空白的項目中來重新編排您的整個問題。你似乎是在生成代碼而不是編寫代碼(當你剛剛開始時,這是一個非常糟糕的主意,但是ala)。 – BalusC 2013-03-01 13:25:44

回答

1

解決。將Project properties -> Frameworks -> JavaServer Faces -> Configuration -> JSF Servlet URL Pattern的值從/faces/*更改爲*.xhtml,並且工作正常。

0

您的client.xhtml內容文件沒有正確組成。不要包含html標籤,因爲JSF不會從這裏解析ui:composition標籤中的任何內容。

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
template="./template.xhtml"> 
     <ui:define name="top"> 
      Welcome, to my website 
     </ui:define> 

     <ui:define name="left"> 
      My links 
     </ui:define> 

     <ui:define name="content"> 
      This page is created for testing 
     </ui:define> 
</ui:composition> 

我測試了您的模板,它的工作原理。

+0

感謝您的回答,但這並不會改變任何內容,我認爲它在構建項目時會自動創建faces目錄,請查看我的編輯和編輯2 – Kiyas 2013-03-02 18:08:54