2012-12-31 63 views
0

所以我必須:模板化JSF 2.0 Primefaces

<!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" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 

<h:body> 
    <ui:composition template="template.xhtml"> 
     <ui:define name="content"> 
      <h:outputText value="Test!!!" /> 
     </ui:define> 
    </ui:composition> 
</h:body> 
</html> 

作爲我的主網​​頁上我的網站和所引用:

<div id="content"> 
    <h:panelGroup layout="block" styleClass="centercss"> 
    <ui:insert name="content" /> 
</h:panelGroup> 
</div> 

...在頁腳和頭部的中間觀點。

現在,如果我嘗試將template =「template.xhtml」更改爲template.jsf,它不會出現在任何地方......現在它的方式是將我的「內容」頁面完美地放在標題的中間,在eclipse預覽頁腳上,但在瀏覽器中根本沒有內容。

我使用primefaces3.1.1而且我有javax.faces-2.1.14 + jsf-api和jsf-impl,所以我認爲它的primefaces 3和JSF 2。 這裏有什麼問題?

+0

什麼是你'web.xml'設置?是否將* .jsf註冊爲servlet的映射? –

+1

爲什麼要將'template.xhtml'更改爲'template.jsf',這是一個不存在的文件?如何使用'template.xthml'失敗?解決方案絕對不是要改變這樣的擴展。 – BalusC

+0

是的,它在main.xhtml的eclipse預覽中映射* .jsf和BalusC,它位於頁腳和頁眉之間的正確位置並顯示內容,但在template.xhtml中沒有。 UI插入內容不起作用。 –

回答

1

我認爲你是以錯誤的方式使用facelets(模板)。你的主頁上應該沒有html和body標籤。將使用該模板的頁面必須在<ui:composition>標籤中定義,並且模板應該將頁面定義爲一個整體(html,body,head標籤等)。

例子:

的index.html

<?xml version="1.0" encoding="UTF-8"?> 
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" 
    template="template.xhtml"> 
    <ui:define name="content"> 
     <h:outputText value="Test!!!" /> 
    </ui:define> 
</ui:composition> 

的template.xhtml

<!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:h="http://java.sun.com/jsf/html" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 
<h:body> 
    <div id="content"> 
     <h:panelGroup layout="block" style="background-color: red;"> 
      <ui:insert name="content" /> 
     </h:panelGroup> 
    </div> 
</h:body> 
</html>