ayoubuntu
ayoubuntu

Reputation: 435

The content of my <ui:define name="content"> tag doesn't appear in the JSF view

I'm working on a project using JSF/Facelets and a Style Sheet in order to decorate my view JSF. I want to put some graphical components (e.g : "h:inputText" and "h:commandButton" tags) in the content of my view XHTML, but this couldn't be achieved and i don't know why ! The only parts that appear are the header and the footer of my template "Template.html".

Anyway, here's my "styles.css" :

body { width: 750px; }

#header 
{
   width:              100%;
   font-size:          36px;
   font-weight:        bold;
   line-height:        48px;
   background-color:   navy;
   color:              white;
}

#footer
{
   width:              100%;
   font-weight:        bold;
   background-color:   navy;
   color:              white;
}

And this is the main template "Template.html" including "Header.html" and "Footer.html", where i put my "styles.css" using the tag :

  <!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:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets">
 <h:head>
      <h:outputStylesheet name="css/styles.css" />      
 </h:head>
 <h:body>
 <h:panelGroup id="page" layout="block">

 <h:panelGroup id="header" layout="block">
    <ui:insert name="header">
        <ui:include src="Header.html" />
    </ui:insert>
 </h:panelGroup>

 <h:panelGroup id="container" layout="block">
    <h:panelGroup id="content" layout="block">
        <ui:insert name="content"></ui:insert>
    </h:panelGroup>
 </h:panelGroup>

 <h:panelGroup id="footer" layout="block">
    <ui:insert name="footer">
        <ui:include src="Footer.html" />
    </ui:insert>
 </h:panelGroup>

 </h:panelGroup>

 </h:body>
 </html>

Anf finally here's my "Main.xhtml" which include the template "Template.html" :

 <?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">
 <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" template="Template.html">
 <h:body>
 <ui:define name="content">
    <h:form>
        <h:inputText title="inputText"></h:inputText>
        <h:commandButton value="OK"></h:commandButton>
    </h:form>
 </ui:define>
 </h:body>
 </ui:composition>

Thanks in advance :)

Upvotes: 0

Views: 6746

Answers (1)

velo
velo

Reputation: 324

you've defined a h:body inside your composition which looks off.

Here is a link to a similar question. how-to-include-another-xhtml-in-xhtml-using-jsf-2-0-facelets

Upvotes: 1

Related Questions