模板化JSF 2.0 Primefaces

时间:2012-12-31 22:33:45

标签: jsf jboss 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>

作为我网站上的主页和template.xhtml:

<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。 这有什么问题?

1 个答案:

答案 0 :(得分: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>