0

所以我有:

<!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 它不会出现在任何地方......现在我的“内容”页面完美地位于日食的页眉和页脚中间预览,但在浏览器上根本没有内容。

我使用 primefaces3.1.1,我有 javax.faces-2.1.14 + jsf-api 和 jsf-impl,所以我认为它的 primefaces 3 和 JSF 2。这里有什么问题?

4

1 回答 1

1

我认为您以错误的方式使用 facelets(模板)。您的主页上不应该有 html 和 body 标签。将使用模板的页面必须在<ui:composition>标签中定义,并且模板应将页面定义为一个整体(html、body、head 标签等)。

例子:

索引.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>

模板.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>
于 2013-11-27T21:13:38.860 回答