Frames e JSF [RESOLVIDO]

Boa tarde pessoal

Andei pesquisando sobre frames em páginas JSF mas não consegui implementar nada.
Alguém pode me ajudar a implementar dois frames em páginas jsf? No frame esquerdo quero colocar um menu que ao ser clicado abra a respectiva página no frame direito.

Agradeço a atenção

O que vc precisa é algo chamado Facelets.

Td q vc precisa é disso:

<iframe></iframe>

O JSF ñ te impede de usar Frames.

[quote=dev.rafael]Td q vc precisa é disso:

<iframe></iframe>

O JSF ñ te impede de usar Frames.[/quote]
frames tem cheiro de 1995 :smiley:

Eu ñ disse q se deve usar. E disse é q dá p/ usar! Eu, particularmente, sou mais fã de divs, mas cada um tem o seu gosto. :wink:

concordo com o raf4ever, vc precisa utilizar facelets, vc pode criar um template, que vai ter um topo, um menu e uma tela principal e todas as suas paginas seguirão o modelo do template

Na verdade facelets ñ tem nada haver com isso, ele é apenas um framework de templates ñ de layout. Vc pode muito bem desenvolver um sistema web sem facelets e sem frames. Facelets ñ é uma solução p/ os layouts baseados em frames. Ele é uma solução, mas p/ outra coisa.

Pessoal, acho que não me expressei direito.

Abaixo tem um modelo de template.

[code]<?xml version='1.0' encoding='UTF-8' ?>

<h:head>

</h:head>

<h:body style="font-size: 10pt">

    <h:form>

        <p:layout fullPage="true" >

            <p:layoutUnit  position="top" height="100" style="border-bottom-style: ridge"  header="TOPO DO TEMPLATE" >
            </p:layoutUnit>

            <p:layoutUnit position="left" width="250" header="Lado Esquerdo" style="border-bottom-style: ridge">
                      <p:calendar mode="inline" />
            </p:layoutUnit>

            <p:layoutUnit position="center" width="250" header="Centro" style="border-bottom-style: ridge">
            </p:layoutUnit>


            <p:layoutUnit position="right" width="150" header="Lado Direito" style="border-bottom-style: ridge">
           
            </p:layoutUnit>


        </p:layout>
    </h:form>
</h:body>
[/code]

O problema é que eu não sei como usar, preciso colocar a página menu.xhtml no LADO ESQUERDO e a página home.xhtml no CENTRO. No menu.xhtml existem botões que abrem outras páginas, gostaria que estas páginas abrissem no CENTRO também.

Obrigado pela atenção

[quote=asandro1501]Pessoal, acho que não me expressei direito.

Abaixo tem um modelo de template.

[code]<?xml version='1.0' encoding='UTF-8' ?>

<h:head>

</h:head>

<h:body style="font-size: 10pt">

    <h:form>

        <p:layout fullPage="true" >

            <p:layoutUnit  position="top" height="100" style="border-bottom-style: ridge"  header="TOPO DO TEMPLATE" >
            </p:layoutUnit>

            <p:layoutUnit position="left" width="250" header="Lado Esquerdo" style="border-bottom-style: ridge">
                      <p:calendar mode="inline" />
            </p:layoutUnit>

            <p:layoutUnit position="center" width="250" header="Centro" style="border-bottom-style: ridge">
            </p:layoutUnit>


            <p:layoutUnit position="right" width="150" header="Lado Direito" style="border-bottom-style: ridge">
           
            </p:layoutUnit>


        </p:layout>
    </h:form>
</h:body>
[/code]

O problema é que eu não sei como usar, preciso colocar a página menu.xhtml no LADO ESQUERDO e a página home.xhtml no CENTRO. No menu.xhtml existem botões que abrem outras páginas, gostaria que estas páginas abrissem no CENTRO também.

Obrigado pela atenção[/quote]

Olá pessoal

Alguma sujestão?

Obrigado

tem várias formas de fazer, vc pode fazer o seguinte:

1: bom o menu vai incluir no proprio template , no menu vai ter links e tals e ui:composition

<!-- este cara vai no lado esquerdo left -->
<ui:include src="menu.xhtml" >

ps.: o que for comum para todas as páginas vc coloca no proprio template

2: todas as paginas usaram o template e vc só mudará o centro.

ps2.: vc pode usar framework em java com ajax para mudar as páginas sem dar um refresh na página toda, assim vc ganha mais performance. Richfaces, jsf2 , ajax4jsf bom vc tem que ver qual melhor se aplica em sua situação.

Então são as páginas que recebem o template e não o template que recebe as páginas?

sim, as páginas tipo usuario.xhtml é que no cabeçalho dele vai ter o nome do template de sua aplicação

ex.:


<ui:composition
    xmlns:ui="http://java.sun.com/jsf/facelets"
    template="./template.xhtml"          <!------------------------ isto aqui informa qual o template vc vai usar para esta pagina ------------------------------->
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:jfx="http://code.google.com/p/javafx4jsf/"
    xmlns:f="http://java.sun.com/jsf/core">

ps.: No caso do menu não precisa ok.

Valeu pela ajuda até agora, só não entendi como fazer para que o conteúdo das outras página apareça no centro.

template.xhtml

<?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">

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.prime.com.tr/ui"

      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">

    <h:head>
        <title><ui:insert name="title">SISP - Sistema Integrado de Saúde Pública</ui:insert></title>
    </h:head>
    <h:body style="font-size: 10pt">

        <h:form>
            <p:layout fullPage="true" >

                <p:layoutUnit  position="top" height="50"   header="TOPO DO TEMPLATE" >
                </p:layoutUnit>

                <p:layoutUnit position="left" width="250"  header="Menu" >
                    <ui:include src="menu.xhtml"/>
                </p:layoutUnit>

                <p:layoutUnit position="center"  header="Centro" >
                </p:layoutUnit>


                <p:layoutUnit position="right" width="200" header="Lado Direito" >
                    <p:calendar mode="inline"/>
                </p:layoutUnit>

            </p:layout>
        </h:form>
    </h:body>
</html>[/code]

menu.xhtml
[code]<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    <body>
        <h:form id="form">
            <h3>Menu</h3>
            <p:menu style="width:200px">
                <p:submenu label="Pacientes">
                    <p:menuitem value="Cadastro" icon="/img/paciente16.png" url="InserePaciente.jsf"/>
                    <p:menuitem value="Busca" icon="/img/busca16.png" url="BuscaPaciente.jsf"/>
                </p:submenu>
            </p:menu>
        </h:form>

    </body>
</html>[/code]

index.xhtml
[code]<?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">

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core">

    <h:head>
        <ui:composition template="template.xhtml"/>
    </h:head>

</html>[/code]

InserePaciente.xhtml
[code]<?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">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets">
 
    <h:body>
        <h:form >

            <p:panel closable="true"  footer="Cadastro" header="Cadastro Pacientes" style="width: 550PX">
                <p:messages />
                <h:panelGrid columns="2"  cellspacing="15%">

                    <h:outputText value="Nome: "/>
                    <h:inputText value="#{pacienteBean.paciente.nomePaciente}" style="width: 350PX" required="true" requiredMessage="Campo [Nome] obrigatório"/>

                    <h:outputText value="RG "/>
                    <h:inputText value="#{pacienteBean.paciente.rg}" required="true" requiredMessage="Campo [RG] obrigatório"/>

                    <h:outputText value="CPF "/>
                    <h:inputText value="#{pacienteBean.paciente.cpf}"  required="true" requiredMessage="Campo [CPF] obrigatório"/>

                    <h:outputText value="Nascimento: "/>
                    <p:calendar pattern="dd/MM/yyyy" readOnlyInputText="true"  value="#{pacienteBean.paciente.dataNacimento}" />


                    <h:outputText value="Endereço: "/>
                    <h:inputText value="#{pacienteBean.paciente.endereco}" style="width: 350PX" required="true" requiredMessage="Campo [Endereço] obrigatório"/>

                    <h:outputText value="Cidade: "/>
                    <h:inputText value="#{pacienteBean.paciente.cidade}" style="width: 350PX" required="true" requiredMessage="Campo [Cidade] obrigatório"/>

                    <h:outputText value="Estado:"/>
                    <h:inputText value="#{pacienteBean.paciente.estado}"  maxlength="2" style="width: 50PX" required="true" requiredMessage="Campo [Estado] obrigatório"/>
                    <h:commandButton value="Salvar"  action="#{pacienteBean.gravaPaciente}" title="Salvar Paciente" style="width: 100PX" />
                </h:panelGrid>

            </p:panel>
        </h:form>
        <br></br><br></br>
        <h:form>
            <p:panel style="width: 200PX">
                <h:commandButton action="ListaPaciente.jsf"  value="Lista de Pacientes"/>
            </p:panel>
        </h:form>
    </h:body>
</html>

Você pode me mostrar como ficaria o código da página InserePaciente.xhtml para que apareça no centro?

Obrigado mais uma vez

blz, mas olha já que seu template tem <html … os outros não precisam

ele vai ficar mais ou menos assim, vc precisa colocar a taglib do -> p: <-

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                template="./template.xhtml">
    
   
    <ui:define name="center">
        <h:body>
         <h:form >

              <p:panel closable="true"  footer="Cadastro" header="Cadastro Pacientes" style="width: 550PX">
                  <p:messages />
                  <h:panelGrid columns="2"  cellspacing="15%">

                      <h:outputText value="Nome: "/>
                      <h:inputText value="#{pacienteBean.paciente.nomePaciente}" style="width: 350PX" required="true" requiredMessage="Campo [Nome] obrigatório"/>

                      <h:outputText value="RG "/>
                      <h:inputText value="#{pacienteBean.paciente.rg}" required="true" requiredMessage="Campo [RG] obrigatório"/>

                      <h:outputText value="CPF "/>
                      <h:inputText value="#{pacienteBean.paciente.cpf}"  required="true" requiredMessage="Campo [CPF] obrigatório"/>

                      <h:outputText value="Nascimento: "/>
                      <p:calendar pattern="dd/MM/yyyy" readOnlyInputText="true"  value="#{pacienteBean.paciente.dataNacimento}" />


                      <h:outputText value="Endereço: "/>
                      <h:inputText value="#{pacienteBean.paciente.endereco}" style="width: 350PX" required="true" requiredMessage="Campo [Endereço] obrigatório"/>

                      <h:outputText value="Cidade: "/>
                      <h:inputText value="#{pacienteBean.paciente.cidade}" style="width: 350PX" required="true" requiredMessage="Campo [Cidade] obrigatório"/>

                      <h:outputText value="Estado:"/>
                     <h:inputText value="#{pacienteBean.paciente.estado}"  maxlength="2" style="width: 50PX" required="true" requiredMessage="Campo [Estado] obrigatório"/>
                      <h:commandButton value="Salvar"  action="#{pacienteBean.gravaPaciente}" title="Salvar Paciente" style="width: 100PX" />
                  </h:panelGrid>

              </p:panel>
          </h:form>
          <br></br><br></br>
          <h:form>
              <p:panel style="width: 200PX">
                  <h:commandButton action="ListaPaciente.jsf"  value="Lista de Pacientes"/>
              </p:panel>
          </h:form>
      </h:body>
    </ui:define>

</ui:composition>

algo mais ou menos assim, vê que no cabeçalho eu não coloquei mais <html …

Olá

Inevitavelmente ainda tenho que te incomodar mais um pouco. Alterei os códigos mas tá dando uns erros e ainda não tá aparecendo a página requisitada.

To chamando o template direto agora.

template.xhtml

[code]

<h:head>
    <title><ui:insert name="title">SISP - Sistema Integrado de Saúde Pública</ui:insert></title>
</h:head>
<h:body style="font-size: 12pt">

    <h:form>
        <p:layout fullPage="true" >

            <p:layoutUnit  position="top" height="50"   header="TOPO DO TEMPLATE" >
            </p:layoutUnit>

            <p:layoutUnit position="left" width="250"  header="Menu" >
                <ui:include src="menu.xhtml"/>
            </p:layoutUnit>

            <p:layoutUnit position="center"  header="Centro" >
            </p:layoutUnit>


            <p:layoutUnit position="right" width="200" header="Lado Direito" >
                <p:calendar mode="inline"/>
            </p:layoutUnit>

        </p:layout>
    </h:form>
</h:body>
[/code]

InserePaciente.xhtml

[code]<ui:composition xmlns:ui=“http://java.sun.com/jsf/facelets
xmlns:h=“http://java.sun.com/jsf/html
xmlns:p=“http://primefaces.prime.com.tr/ui
template=“template.xhtml”>

    <h:form >

        <p:panel closable="false"  footer="Cadastro" header="Cadastro Pacientes" style="width: 550PX">
            <p:messages />
            <h:panelGrid columns="2"  cellspacing="15%">

                <h:outputText value="Nome: "/>
                <h:inputText value="#{pacienteBean.paciente.nomePaciente}" style="width: 350PX" required="true" requiredMessage="Campo [Nome] obrigatório"/>

                <h:outputText value="RG "/>
                <h:inputText value="#{pacienteBean.paciente.rg}" required="true" requiredMessage="Campo [RG] obrigatório"/>

                <h:outputText value="CPF "/>
                <h:inputText value="#{pacienteBean.paciente.cpf}"  required="true" requiredMessage="Campo [CPF] obrigatório"/>

                <h:outputText value="Nascimento: "/>
                <p:calendar pattern="dd/MM/yyyy" readOnlyInputText="true"  value="#{pacienteBean.paciente.dataNacimento}" />


                <h:outputText value="Endereço: "/>
                <h:inputText value="#{pacienteBean.paciente.endereco}" style="width: 350PX" required="true" requiredMessage="Campo [Endereço] obrigatório"/>

                <h:outputText value="Cidade: "/>
                <h:inputText value="#{pacienteBean.paciente.cidade}" style="width: 350PX" required="true" requiredMessage="Campo [Cidade] obrigatório"/>

                <h:outputText value="Estado:"/>
                <h:inputText value="#{pacienteBean.paciente.estado}"  maxlength="2" style="width: 50PX" required="true" requiredMessage="Campo [Estado] obrigatório"/>
                <h:commandButton value="Salvar"  action="#{pacienteBean.gravaPaciente}" title="Salvar Paciente" style="width: 100PX" />
            </h:panelGrid>

        </p:panel>
    </h:form>
    
    <br></br><br></br>

    <h:form>
        <p:panel style="width: 200PX">
            <h:commandButton action="ListaPaciente.jsf"  value="Lista de Pacientes"/>
        </p:panel>
    </h:form>

</ui:define>
[/code]

menu.xhtml

[code]<ui:composition xmlns=“http://www.w3.org/1999/xhtml
xmlns:h=“http://java.sun.com/jsf/html
xmlns:p=“http://primefaces.prime.com.tr/ui
xmlns:f=“http://java.sun.com/jsf/core
xmlns:ui=“http://java.sun.com/jsf/facelets”>

<h:form id=“form”>
<p:menu style=“width:200px”>
<p:submenu label=“Pacientes”>
<p:menuitem value=“Cadastro” icon="/img/paciente16.png" url=“InserePaciente.jsf”/>
<p:menuitem value=“Busca” icon="/img/busca16.png" url=“BuscaPaciente.jsf”/>
<p:menuitem value=“Teste de Chamada” icon="/img/busca16.png" url=“teste.jsf” />
</p:submenu>
</p:menu>

    </h:form>

</body>

</ui:composition>[/code]

e esse é o erro que tá dando:

Warning: This page calls for XML namespace declared with prefix body but no taglibrary exists for that namespace.

Você tem o título de algum livro que seja bom sobre o assunto?

Obrigado mais uma vez

bom aos poucos vamos resolvendo seus problemas. percebi mais alguns:
1- se seu template tem o form, não é recomendado vc colocar //do template do cliente de seu template, ou seja, não pode ter form dentro de form. Ou vc coloca nos clientes do template ou vc coloca no template
2- nos clientes vc tb não precisa da tag , ve só quando a pagina que usa o template é aberta no browser , é como se fosse um arquivo só, tipo o padrão composite view. Uma pagina html é recomendado que tenha apenas uma tag uma tag pois na hora do browser interpretar o código ele pode ou demorar para interpretar ou interpretar de forma errada e se tiver css é que piora tudo, então tem que se ter cuidado na hora de se usar o template e fazer com que no final seja criada uma página html de forma correta.

tenta tirar a tag do menu e do inserePaciente

eu estava dando uma pesquisada sobre layouts com o primefaces, e acho que no seu templete esta faltando:

<p:layout fullPage=?true?>	</p:layout>

dá uma olhada neste link e ver se te ajuda:
http://quebrandoparadigmas.wordpress.com/2010/08/06/layouts-no-primefaces/

o que vc precisa fazer é unir a forma de layout do primefaces com o composite view do facelets

no seu TEMPLATE.XHTMLvc utiliza vc utiliza o layout do primefaces e onde ficar cada local vc vai colocar:
ex.:


<!-- onde for o topo das páginas -->
<ui:insert name="top">Top</ui:insert>

<!-- onde for o lado esquerdo -->
<ui:insert name="left">Left</ui:insert>

<!-- onde for o centro -->
<ui:insert name="content">Content</ui:insert>

Só lembrando que no facelets vc pode colocar o nome que quizer e pode ir dividindo quantas vezes quizer.

nas páginas cliente do modelo (template ) vc vai fazer:

INSERECLIENTE.XHTML

<!-- onde for o topo do cliente -->
<ui:define name="top">
        
</ui:define>

<!-- a parte esquerda deste cliente -->
    <ui:define name="left">
        
    </ui:define>


<!-- aqui o conteudo do cliente, a parte do centro -->
<ui:define name="content"> </ui:define>

lembrando que se o topo for igual para todos , só precisa no template e a mesma coisa para a parte esquerda ( tipo o menu ) e todos os clientes só precisam do ui:composition

bom qualquer coisa posta ai

Boa tarde

Quero agradecer pela sua enorme ajuda.

Andei pesquisando também, e é possível fazer somente com

, esta tag permite configurações como alinhamento, bordas, etc.

Valeu pelas dicas de limpeza dos códigos como os e . Quanto aos , eles são necessários dependendo dos outros componentes utilizados nas páginas como os <p:panel>.

Eu acabei utilizando o layout do primefaces, as tags de referência das páginas e as tags

pra dar uma ajeitada. Não sei se é a melhor maneira de utilizar este conjunto mas agora que eu entendi o que cada um faz ficou bem mais fácil.

Segue abaixo o exemplo dos códigos, espero que ajude alguém com isso.

template.xhtml[code]

<h:head>
    <title><ui:insert name="title">SISP - Sistema Integrado de Saúde Pública</ui:insert></title>
    <h:outputStylesheet name="styles.css" library="css"/>
</h:head>
<h:body style="font-size: 12pt">


    <p:layout fullPage="true" >

        <p:layoutUnit  position="top" height="70"  >
            <div align="center">
            <ui:insert name="top" >
                <ui:include src="topo.xhtml"/>
            </ui:insert>
            </div>
        </p:layoutUnit>

        <p:layoutUnit position="left" width="250"  header="Menu" >

            <ui:insert name="left">Left
                <ui:include src="menu.xhtml"/>
            </ui:insert>

        </p:layoutUnit>


        <p:layoutUnit   position="center"  header="Centro" >

            <div align="center" style="border: blue">
            <ui:insert name="content"></ui:insert>
            </div>
        </p:layoutUnit>


        <p:layoutUnit position="right" width="200" header="Lado Direito" >
            <p:calendar mode="inline"/>
        </p:layoutUnit>

    </p:layout>

</h:body>
[/code]

InserePaciente.xhtml - Esta é uma das páginas chamadas pelo menu e deve aparecer no centro do template.

[code]<ui:composition template=“template.xhtml”
xmlns=“http://www.w3.org/1999/xhtml
xmlns:p=“http://primefaces.prime.com.tr/ui
xmlns:f=“http://java.sun.com/jsf/core
xmlns:h=“http://java.sun.com/jsf/html
xmlns:ui=“http://java.sun.com/jsf/facelets”>

<ui:define name="title"> Cadastro de Paciente </ui:define>

<ui:define name="content">

        <h:form >

            <p:panel   header="Cadastro Pacientes" style="width: 550PX">
                <p:messages />
                <h:panelGrid columns="2"  cellspacing="15%">

                    <h:outputText value="Nome: "/>
                    <h:inputText value="#{pacienteBean.paciente.nomePaciente}" style="width: 350PX" required="true" requiredMessage="Campo [Nome] obrigatório"/>

                    <h:outputText value="RG "/>
                    <h:inputText value="#{pacienteBean.paciente.rg}" required="true" requiredMessage="Campo [RG] obrigatório"/>

                    <h:outputText value="CPF "/>
                    <h:inputText value="#{pacienteBean.paciente.cpf}"  required="true" requiredMessage="Campo [CPF] obrigatório"/>

                    <h:outputText value="Nascimento: "/>
                    <p:calendar pattern="dd/MM/yyyy" readOnlyInputText="true"  value="#{pacienteBean.paciente.dataNacimento}" />


                    <h:outputText value="Endereço: "/>
                    <h:inputText value="#{pacienteBean.paciente.endereco}" style="width: 350PX" required="true" requiredMessage="Campo [Endereço] obrigatório"/>

                    <h:outputText value="Cidade: "/>
                    <h:inputText value="#{pacienteBean.paciente.cidade}" style="width: 350PX" required="true" requiredMessage="Campo [Cidade] obrigatório"/>

                    <h:outputText value="Estado:"/>
                    <h:inputText value="#{pacienteBean.paciente.estado}"  maxlength="2" style="width: 50PX" required="true" requiredMessage="Campo [Estado] obrigatório"/>
                    <h:commandButton value="Salvar"  action="#{pacienteBean.gravaPaciente}" title="Salvar Paciente" style="width: 100PX" />
                </h:panelGrid>

            </p:panel>
        </h:form>
        <br></br><br></br>
        <h:form>
            <p:panel style="width: 200PX">
                <h:commandButton action="ListaPaciente.jsf"  value="Lista de Pacientes"/>
            </p:panel>
        </h:form>

</ui:define>

</ui:composition>
[/code]

menu.xhtml

[code]<ui:composition xmlns=“http://www.w3.org/1999/xhtml
xmlns:h=“http://java.sun.com/jsf/html
xmlns:p=“http://primefaces.prime.com.tr/ui
xmlns:f=“http://java.sun.com/jsf/core
xmlns:ui=“http://java.sun.com/jsf/facelets”>

<h:form id="form">
    <p:menu style="width:150px">
        <p:submenu label="Pacientes">
            <p:menuitem value="Cadastro" icon="/img/paciente16.png" url="InserePaciente.jsf"/>
            <p:menuitem value="Busca" icon="/img/busca16.png" url="BuscaPaciente.jsf"/>
            <p:menuitem value="Lista" icon="/img/busca16.png" url="ListaPaciente.jsf"/>
        </p:submenu>
    </p:menu>

</h:form>
[/code]

topo.xhtml - Esta página só tem um banner e assim como o menu.xhtml ficar sempre fixa no layout

[code]
<ui:composition xmlns=“http://www.w3.org/1999/xhtml
xmlns:p=“http://primefaces.prime.com.tr/ui
xmlns:f=“http://java.sun.com/jsf/core
xmlns:h=“http://java.sun.com/jsf/html
xmlns:ui=“http://java.sun.com/jsf/facelets”>

<img src="img/titulo.png" width="929" align="center" height="61" alt="titulo"/>

</ui:composition>[/code]

Obrigado mais uma vez

Vou dar o post como resolvido.