我已经完成了三个步骤的模板:
首先,我创建了一个xhtml文件,其中包含所有页面通用的内容:
AllComponentsTemplate.xhtml
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
<title>State Transport Department- Work Schedule</title>
<meta name="viewport" content="width=device-width"/>
<link rel="stylesheet" type="text/css" href="../../CSS/CompleteTemplateCSS.css"/>
<link rel="stylesheet" type="text/css" href="../../CSS/templateCSS.css"/>
</head>
<body>
<div class="container">
<div class="header"></div>
<div class="menu">
<h:outputLabel class="welcomeNote" value="#{welcomeBean.fullname}" />
<ul class="ulForMyAccount"><li> <h:outputLabel value="My Account" id="mainAnchor"/>
<ul ><li> <a href="/webpages/ChangePasswordxhtml.xhtml" id="subAnchor" >Change my Password</a> </li> </ul></li></ul> </div>
<div class="contentBody">
<div class="menuTable">
<table class="templateBody" >
<tr>
<td class="navigationLink" > <ul><li>
<h:link value="Home" outcome="/webpages/NewWelcome.xhtml" rendered="#{welcomeBean.home}" class="mainLinks"/>
</li></ul> </td>
</tr> </table> </div> </div>
<div class="footer"></div>
</div> </body> </html>
然后我创建了一个MainTemplate.xhtml页面,我将在其他页面中使用它作为模板:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<f:view>
<h:head>
<title>State Transport Department-Work Schedule</title>
</h:head>
<h:body>
<ui:include src="AllComponentsTemplate.xhtml"/>
<ui:insert name="informationBody"></ui:insert>
</h:body> </f:view> </html>
然后我将此模板添加到我的第一个页面Trial.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
template="/webpages/templates/CompleteTemplate.xhtml">
<ui:define name="informationBody">
<h:form>
<h:commandButton id="allocateButton" value="Test Submit" action="#{empDutySchedBean.testMethod}"/>
</h:form>
</ui:define>
</ui:composition>
注意:trial.xhtml没有html、head、body标记。
问题:直到MainTemplate.xhtml页面,包括链接等在内的所有组件都是完全可见的但是在将模板包含到Trial.xhtml页面后,没有出现我的帐户、欢迎标签、主页导航链接。
除此之外,我为网页的背景颜色应用的所有css都出现了。
我不知道为什么。我们将不胜感激。我是编码的初学者。
谢谢!:)
也将AllComponentsTemplate.xhtml
定义为ui:composition
,它不需要html
、head
和body
,并且由于AllComponentsTemplate.xhtml
将被包括在内,因此不需要添加template
属性或define
部分。
如果我是你,我会用html
、h:head
和h:body
等设置AllComponentsTemplate.xhtml
作为它自己的主模板,并让Trial.xhtml
实现它。稍后,如果您需要另一个页面来拥有共享视图,您可以继续创建AnotherComponentsTemplate.xhtml
并让它们实现它。
请参阅此链接,它将帮助您入门。
http://www.mkyong.com/jsf2/jsf-2-templating-with-facelets-example/
考虑到你的问题,使用h:head和h:body作为所有html标签,正如Najjar在回答中所说的那样。