[Resolvido] Usando templates com PrimeFaces

Bom dia amigos,

Estou tentanto criar um template para ser utilizado em um sistema que usa PrimeFaces, no entanto sempre quando tento rodar é lançada a exception:

java.lang.StackOverflowError java.lang.Exception.<init>(Unknown Source) java.lang.RuntimeException.<init>(Unknown Source) javax.el.ELException.<init>(ELException.java:54)

Os templates criados com Facelets são imcompatíveis com o layout do Prime?

Vejam meu código completo:

default.xhtml (template)

[code]<?xml version="1.0" encoding="ISO-8859-1" ?>

Gerenciador de créditos reprográficos
<style type="text/css">

.ui-widget {
font-size: 12px !important;
}

<p:growl id="messages" />

<p:layout fullPage="true">

	<p:layoutUnit position="north" size="100" resizable="false"
		closable="false" collapsible="true">

	</p:layoutUnit>

	<p:layoutUnit position="south" size="25" resizable="false"
		closable="false" collapsible="true">
		<center>
			<h:outputLabel value="rodape" />
		</center>
	</p:layoutUnit>

	<p:layoutUnit position="west" size="200px" resizable="true"
		closable="false" collapsible="true" effect="drop">
		<ui:include src="menu.xhtml"></ui:include>
	</p:layoutUnit>

	<p:layoutUnit position="center">
		<ui:insert name="conteudo" />
	</p:layoutUnit>

</p:layout>

</h:body>

[/code]

reprografia.xhtml

[code]<?xml version="1.0" encoding="ISO-8859-1" ?>

<ui:composition template=“default.xhtml”>
<ui:define name=“conteudo”>

	<h:outputText value="Isto deve aparecer no centro da aplicação" />

</ui:define>

</ui:composition>

[/code]

menu.xhtml

[code]

<?xml version="1.0" encoding="ISO-8859-1" ?>

<ui:composition template=“default.xhtml”>
<ui:define name=“menu”>
<f:view>
<h:form id=“formMenu”>
<p:menu style=“width:200px; height: 400px”>
<p:submenu label=“Creditos de impressao”>
<p:menuitem value=“Gerenciar creditos” update=“messages” />
</p:submenu>
<p:submenu label=“Relatorios”>
<p:menuitem value=“Resumo diario” update=“messages” ajax=“false” />
<p:menuitem value=“Resumo por operador” update=“messages”
ajax=“false” />
<p:menuitem value=“Creditos por aluno” update=“messages”
ajax=“false” />
<p:menuitem value=“Impressoes por aluno” update=“messages”
ajax=“false” />
<p:menuitem value=“Impressoes por impressora” update=“messages”
ajax=“false” />
<p:menuitem value=“Creditos por reprografia” update=“messages”
ajax=“false” />
<p:menuitem value=“Creditos por periodo” update=“messages”
ajax=“false” />
</p:submenu>
<p:submenu label=“Ferramentas”>
<p:menuitem value=“Gerenciar operador” update=“messages”
ajax=“false” />
<p:menuitem value=“Modo administrador” update=“messages”
ajax=“false” />
</p:submenu>
</p:menu>
</h:form>
</f:view>
</ui:define>
</ui:composition>

[/code]

Obrigado guj.

Meu brother vamos lá eu sou iniciante mas o meu esta funcionando normalmente. vou postar meu código e depois te falar onde acho que esta o erro :smiley:

–X-- MEU TEMPLATE --X–

<?xml version="1.0" encoding="UTF-8"?> Concursando Web body {margin: 0; padding: 0; background: #ddd;} #container {margin: 0 auto; width: 1002px; background: #fff;} #header {background: #0066ff; height: 200px; margin: 0 0 10px 0;} #mainnav { background: #00cccc; margin: 0 10px 10px 10px;} /**/ #content { margin: 0 10px 10px 10px;}/* */ #footer {clear: both; background: #99ccff; height: 200px;}
        .ui-widget,  
        .ui-widget .ui-widget {font-size: 12px !important;}

    </style>
</h:head>
<h:body>  
    <div id="container">  	
        <div id="header" title="Concursando Web">  		
            <div id="skipmenu"></div>  		 	
        </div> <!-- final div header -->

        <div id="mainnav">	
            <ui:include src="/mainNav.xhtml" />
        </div> <!-- final div mainnav -->

        <div id="content">  		
            <div class="contents">  			
                <ui:insert name="contents" />
            </div> <!-- final div contents -->	
        </div><!-- final div content -->

        <div id="footer">  		
            <ui:include src="/footer.xhtml" />  	
        </div><!-- final div footer -->

    </div> <!-- final div container -->
</h:body>  

minha index que usa o <ui:insert name"" /> no template

–X--

<ui:composition 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
template="/template.xhtml">
<ui:define name=“contents”>
<h:form id=“verConcurso”>


Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográfica e de impressos, e vem sendo utilizado desde o século XVI, quando um impressor desconhecido pegou uma bandeja de tipos e os embaralhou para fazer um livro de modelos de tipos.


Lorem Ipsum sobreviveu não só a cinco séculos, como também ao salto para a editoração eletrônica, permanecendo essencialmente inalterado.


Se popularizou na década de 60, quando a Letraset lançou decalques contendo passagens de Lorem Ipsum, e mais recentemente quando passou a ser integrado a softwares de editoração eletrônica como Aldus PageMaker.




Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográfica e de impressos, e vem sendo utilizado desde o século XVI, quando um impressor desconhecido pegou uma bandeja de tipos e os embaralhou para fazer um livro de modelos de tipos.


Lorem Ipsum sobreviveu não só a cinco séculos, como também ao salto para a editoração eletrônica, permanecendo essencialmente inalterado.


Se popularizou na década de 60, quando a Letraset lançou decalques contendo passagens de Lorem Ipsum, e mais recentemente quando passou a ser integrado a softwares de editoração eletrônica como Aldus PageMaker.



</h:form>
</ui:define>
</ui:composition>[code]

[code]Legal…

Nas paginas que você usa o template você não usa as tags

Fica tudo dentro do

<ui:composition 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
template="/template.xhtml">

Repara no template="/template.xhtml" esta no ui:composition acho que resolve abraço.

</ui:composition>[/code]

Opa goperzin,

Valeu maninho, foi isso mesmo que aconteceu!

Veja meu código como ficou:

template

[code]<?xml version="1.0" encoding="ISO-8859-1" ?>

Gerenciador de créditos reprográficos
<style type="text/css">

.ui-widget {
font-size: 12px !important;
}

<p:growl id="messages" />

<p:layout fullPage="true">

	<p:layoutUnit position="north" size="100" resizable="false"
		closable="false" collapsible="true">

	</p:layoutUnit>

	<p:layoutUnit position="south" size="25" resizable="false"
		closable="false" collapsible="true">
		<ui:include src="/rodape.xhtml"/>
	</p:layoutUnit>

	<p:layoutUnit position="west" size="200px" resizable="true"
		closable="false" collapsible="true" effect="drop">
		<ui:include src="/menu.xhtml" />
	</p:layoutUnit>

	<p:layoutUnit position="center">
		<ui:insert name="conteudo" />
	</p:layoutUnit>

</p:layout>

</h:body>

[/code]

reprografia.xhtml

[code]<?xml version="1.0" encoding="ISO-8859-1" ?>

<ui:composition xmlns=“http://www.w3.org/1999/xhtml
xmlns:h=“http://java.sun.com/jsf/html
xmlns:f=“http://java.sun.com/jsf/core
xmlns:ui=“http://java.sun.com/jsf/facelets
xmlns:p=“http://primefaces.org/ui
template="/WEB-INF/templates/default.xhtml">

<ui:define name="conteudo">

	<h:outputText value="Isto deve aparecer no centro da aplicação" />

</ui:define>

</ui:composition>
[/code]

menu.xhtml

[code]<?xml version="1.0" encoding="ISO-8859-1" ?>

<h:body>

<h:form id="formMenu">
	<p:menu style="width:200px; height: 400px">
		<p:submenu label="Creditos de impressao">
			<p:menuitem value="Gerenciar creditos" update="messages" />
		</p:submenu>
		<p:submenu label="Relatorios">
			<p:menuitem value="Resumo diario" update="messages" ajax="false" />
			<p:menuitem value="Resumo por operador" update="messages"
				ajax="false" />
			<p:menuitem value="Creditos por aluno" update="messages"
				ajax="false" />
			<p:menuitem value="Impressoes por aluno" update="messages"
				ajax="false" />
			<p:menuitem value="Impressoes por impressora" update="messages"
				ajax="false" />
			<p:menuitem value="Creditos por reprografia" update="messages"
				ajax="false" />
			<p:menuitem value="Creditos por periodo" update="messages"
				ajax="false" />
		</p:submenu>
		<p:submenu label="Ferramentas">
			<p:menuitem value="Gerenciar operador" update="messages"
				ajax="false" />
			<p:menuitem value="Modo administrador" update="messages"
				ajax="false" />
		</p:submenu>
	</p:menu>
</h:form>

</h:body>

[/code]

Obrigado!!! :smiley:

Boa brother coloca como - RESOLVIDO - :smiley:

Abraço.

Prontinho mano.

Valeu!

Cara, estou com este problema, mas minhas páginas estão corretas e mesmo assim não aparece nada no meu login.xhtml. Ela fica toda cinza que é a cor que eu defini dentro do style. O mais engraçado é que estava tudo funcionando perfeitamente e do nada parou. Por favor, sera que poderiam me ajudar sou novo em Primefaces.

Vou deixar meu template pra vocês darem uma olhada e minha tela.

Obrigado.

Meu template[i]

 <h:head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title><ui:insert name="titulo">Titulo</ui:insert></title>  
    <style type="text/css">
        body {background-color: #eeeeee; font-size: 12px}
        .ui-widget {font-size: 11px !important; font-style: normal;  font-family: geneva, arial, helvetica, sans-serif;}    
        .ui-selectonemenu-label{text-align: left;alignment-baseline: alphabetic;}
    </style> 
</h:head>

<h:body>
   <p:growl id="popup"/>
    <center>
        <p:layout style="min-width:1035px;max-width:1250px;min-height:700px" id="layout" fullPage="false">   

            <p:layoutUnit position="north" size="80" resizable="false" closable="false" collapsible="true">  
                <!-- <h:graphicImage url="/tema/imagens/topo.jpg" /> -->
            </p:layoutUnit>                

            <p:layoutUnit position="south" size="30" resizable="false" closable="false" collapsible="true">  
                <h:outputText value="AUTOR" />  
            </p:layoutUnit>  

            <p:layoutUnit position="west" size="150px"  resizable="true" closable="false" collapsible="true" effect="drop">  
                <!-- <ui:include src="menu.xhtml"></ui:include>  -->
                <h:form>
                    <p:menu>
                        <p:submenu label="Menu">		<!--  action="#{regrasController.logout}" -->
                            <p:menuitem value="Logoff" ajax="false" icon="ui-icon-key"/>                              
                            <!--  <p:menuitem value="Cadastro" icon="ui-icon-contact" /> -->
                        </p:submenu>
                    </p:menu>
                </h:form>            
            </p:layoutUnit>  

            <p:layoutUnit position="center">  
                <ui:insert name="centro">
                    O que estiver aqui será substituido!
                </ui:insert>
            </p:layoutUnit>  
        </p:layout>  
    </center>

    <!-- FORM UPLOAD AUDIO -->
    <p:dialog  showEffect="explode" hideEffect="explode" modal="true" header="Enviar Audio:" height="auto" width="auto" widgetVar="uploadDialog" appendToBody="true" resizable="false">  
        <h:form id="formUpload" enctype="multipart/form-data" >
            <p:panel id="panel" style="margin-bottom:10px; border: 0px;">
                <p:fileUpload  fileUploadListener="#{UploadAudio.upload}" showButtons="false" label="Procurar..." auto="false" oncomplete="uploadDialog.hide();"/>
                <p:growl id="popup" showDetail="true"/> 
            </p:panel>
        </h:form>
    </p:dialog>   

    <!-- FORM EDITAR REGRA -->
</h:body>

Meu login.xhtml[/i]

<ui:composition 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
template="/template/template.xhtml">


	<h:outputLabel value="Senha:" for="senha"/>
		<p:password style="font-size:12px !important;" value="#{LoginManagedBean.usuario.senha}"  id="senha" required="true" label="senha" />  	
				<f:facet name="footer">	
					<p:commandButton style="font-size:12px !important;" action="#{LoginManagedBean.login}" value="Logar" />	 
				</f:facet>  
		</h:panelGrid>
	</h:form>
	</ui:define>

Meu index.xhtml[i]

<ui:composition 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
template="/template/template.xhtml">

<ui:define name="centro">
   <h:form id="formCad">
		<p:growl id="msg"/>
                <p:row>  
                    <p:column colspan="15">Cadastro de Regras</p:column>  
                </p:row>			
	  	 <p:menubar style="margin-top:10px; min-width:1000px;max-width:1000px; font-size:12px ;">
		    <p:submenu label="Cadastro">
		        <p:menuitem value="Pacientes" url="http://www.google.com.br" />
		        <p:menuitem value="Usuário" url="#" />
		        <p:menuitem value="Médicos" url="#" />			       
		    </p:submenu>
		     <p:submenu label="Agenda">
		        <p:menuitem value="Médicos" url="http://www.google.com.br" />
		        <p:menuitem value="Pacientes" url="http://www.google.com.br" />
		    </p:submenu>
		     <p:submenu label="Ajuda">
		        <p:menuitem value="Suporte do Sistema" url="http://www.google.com.br"/>
		         <p:menuitem value="" url="http://www.google.com.br" />
		    </p:submenu>
		    <p:submenu label="Sobre Nós">
		        <p:menuitem value="Desenvolvedores" url="http://www.google.com.br" />
		        <p:menuitem value="Sobre o Agendadoc" url="http://www.google.com.br" />
		    </p:submenu>
		    <p:submenu label="Clientes">
		        <p:menuitem value="IBM" url="http://www.google.com.br" />
		        <p:menuitem value="VIVO" url="http://www.google.com.br" />
		         <p:menuitem value="T-Systems" url="http://www.google.com.br" />
		         <p:menuitem value="TAM" url="http://www.google.com.br" />
		    </p:submenu>
		    <p:submenu label="Fale Conosco">
		        <p:menuitem value="Trabalhe conosco" url="http://www.google.com.br" />
		        <p:menuitem value="Mande um Email" url="http://www.google.com.br" />
		    </p:submenu>
		     <p:submenu label="Paginas">
		        <p:menuitem value="INDEX" url="/index.jsf" />
		        <p:menuitem value="TesteLogoff" url="/testeLogoff.jsf" />
		    </p:submenu>
		    <p:menuitem value="Sair" url="#" icon="ui-icon ui-icon-power" />
			</p:menubar>
        <br/>
    </h:form>
    <br/>
    <br/>

		
	<p:dialog  showEffect="explode" hideEffect="explode" modal="true" header="Enviar Audio:" height="auto" width="auto" widgetVar="uploadDialog" appendToBody="true" resizable="false">  
        <h:form id="formUploads" enctype="multipart/form-data" >
            <p:panel id="panel" style="margin-bottom:10px; border: 0px;">
                <p:fileUpload  fileUploadListener="#{UploadAudio.upload}"  update="@form" showButtons="false" label="Procurar..." auto="false" oncomplete="uploadDialog.hide();"/>
                <p:growl id="popup" showDetail="true"/> 
            </p:panel>
        </h:form>
    </p:dialog>        	


    <!-- FIM FORM CADASTRO -->

    <h:form id="formTableMed">
        <p:growl id="mensagens" showDetail="true"/> 
        <p:dataTable id="dtMedicos" var="medico" value="#{medicoController.medicoModel}" paginator="true" rows="10" rowKey="#{medico.idMedico}" selectionMode="single"
                     style="text-align: center; margin-top:10px; min-width:1050px; max-width:1050px;"  > 
			<f:facet name="header">    
                Regras  
            </f:facet>  

            <p:column headerText="ID" sortBy="#{medico.idMedico}"  style="min-width: 1px; font-size:11px ; max-width: 10px;" >    
               #{medico.idMedico}
            </p:column>
            
            <p:column headerText="Médico" sortBy="#{medico.nomeMedico}"  style="min-width: 15px; font-size:11px ; max-width: 20px;" >    
                #{medico.nomeMedico}
            </p:column>                

            <p:column headerText="Data Consulta" sortBy="#{medico.dataConsulta}" style="min-width: 1px; font-size:11px ; max-width: 23px;">    
                #{medico.dataConsulta}
            </p:column>

            <p:column headerText="Especialidade" sortBy="#{medico.especialidade}" style="min-width: 1px; font-size:11px ; max-width: 23px;">    
              #{medico.idMedico} 
            </p:column>    

            <p:column headerText="Paciente" sortBy="#{medico.idMedico}" style="min-width: 1px; font-size:11px ; max-width: 23px;">    
               #{medico.idMedico} 
            </p:column>                

            <p:column headerText="Endereço" sortBy="#{medico.idMedico}" style="min-width: 1px; font-size:11px ; max-width: 23px;">    
                #{medico.idMedico} 
            </p:column>                 

            <p:column headerText="Cidade" sortBy="#{medico.idMedico}" style="min-width: 15px; font-size:11px ; max-width: 23px;">    
                #{medico.idMedico}
            </p:column> 

            <p:column headerText="Email" sortBy="#{regra.opcao0}" style="min-width: 10px; font-size:11px ; max-width: 23px;">    
                #{medico.idMedico}
            </p:column>

            <p:column headerText="Telefone" sortBy="#{medico.idMedico}" style="min-width: 10px; font-size:11px ; max-width: 23px;">    
                #{medico.idMedico}   
            </p:column>

            <p:column style="width:20px; font-size:11px;" >
                <f:facet name="header">  
                    <h:outputText value="Ação"/>  
                </f:facet>

                <p:commandLink id="edit"  update=":formTabelaMedicos:editar" oncomplete="editarMedicoDialog.show()" value="Editar" >
                    <f:setPropertyActionListener value="#{medico}"  target="#{medicoController.selecaoMedicos}" />  
                </p:commandLink>    
            </p:column>   
        </p:dataTable>   

</h:form>

        <p:dialog id="edMedicoDialog" header="Editar Regra:" showEffect="clip"
                  hideEffect="explode" modal="false" widgetVar="editarMedicoDialog" appendToBody="true" resizable="false">    
            <h:form id="formTabelaMedicos">
                    <p:panelGrid id="editar" style="margin-top:10px;min-width:1000px;max-width:1000px;" >
                    <f:facet name="header">
                        <p:row>  
                            <p:column colspan="14">Editar Regra #{medicoController.selecaoMedicos.idMedico}</p:column>  
                        </p:row>
                        <p:row>        
                            <p:column style="display:none">ID</p:column> 
                            <p:column>ATIVA</p:column>  
                            <p:column>DNIS</p:column>  
                            <p:column>PERFIL</p:column>
                            <p:column>NATUREZA</p:column>  
                            <p:column>SITUAÇÃO</p:column>
                            <p:column colspan="2">TMV</p:column>
                            <p:column>LOCUÇÃO</p:column>
                            <p:column>OP#0</p:column>
                            <p:column>OP#1</p:column>
                            <p:column>OP#2</p:column>
                            <p:column>OP#3</p:column>
                            <p:column>OP#4</p:column>
                            <p:column>OP#5</p:column>            
                        </p:row> 
                        <p:row>  
                            <p:column style="display:none">
                                <p:inputText style="display:none" id="id" disabled="false" value="#{regrasController.selecaoRegra.id}" size="1"/>                                      
                            </p:column>
                            
                            <p:column>
                                <p:selectBooleanCheckbox id="ativa" value="#{regrasController.selecaoRegra.ativa}"  />                                        
                            </p:column>

                            <p:column >
                                <p:inputText id="dnis" value="#{regrasController.selecaoRegra.dnis}" size="10"/>
                            </p:column>

                            <p:column >
                                <p:selectOneMenu id="perfil" value="#{regrasController.selecaoRegra.perfil}" >  
                                    <f:selectItem itemLabel="" itemValue=""/>  
                                    <f:selectItem itemLabel="ISP" itemValue="ISP"/>  
                                    <f:selectItem itemLabel="EMP" itemValue="EMP"/>  
                                </p:selectOneMenu>								        
                            </p:column>

                            <p:column >
                                <p:selectOneMenu id="natureza" value="#{regrasController.selecaoRegra.natureza}" >  
                                    <f:selectItem itemLabel="" itemValue=""/>  
                                    <f:selectItem itemLabel="PJ" itemValue="PJ"/>  
                                    <f:selectItem itemLabel="PF" itemValue="PF"/> 
                                </p:selectOneMenu>
                            </p:column>
                            <p:column >
                                <p:selectOneMenu id="situacao" value="#{regrasController.selecaoRegra.situacao}">  
                                    <f:selectItem itemLabel="" itemValue=""/>  
                                    <f:selectItem itemLabel="ATA" itemValue="ATA"/>  
                                    <f:selectItem itemLabel="ATI" itemValue="ATI"/>     	        
                                    <f:selectItem itemLabel="CAM" itemValue="CAM"/>     	        
                                    <f:selectItem itemLabel="SUA" itemValue="SUA"/>     	        
                                    <f:selectItem itemLabel="SUF" itemValue="SUF"/>     	        
                                    <f:selectItem itemLabel="SUM" itemValue="SUM"/>     	                                                            
                                </p:selectOneMenu>
                            </p:column>
                            <p:column >
                                <p:selectOneMenu id="tmv" value="#{regrasController.selecaoRegra.tmv}">  
                                    <f:selectItem itemLabel="TODOS" itemValue="TODOS"/>     	        
                                    <f:selectItem itemLabel="MAIS QUE" itemValue="MAIS QUE"/>     	        
                                    <f:selectItem itemLabel="MENOS QUE" itemValue="MENOS QUE"/>  

                                </p:selectOneMenu>

                            </p:column>
                            <p:column ><p:inputText id="tmv_txt" value="#{regrasController.tmv_txt}" size="5" /></p:column>
                            <p:column ><p:inputText id="locucao" value="#{regrasController.selecaoRegra.locucao}" /></p:column>

                            <p:column ><p:selectBooleanCheckbox value="#{regrasController.selecaoRegra.opcao0}" /></p:column>
                            <p:column ><p:selectBooleanCheckbox value="#{regrasController.selecaoRegra.opcao1}" /></p:column>
                            <p:column ><p:selectBooleanCheckbox value="#{regrasController.selecaoRegra.opcao2}" /></p:column>
                            <p:column ><p:selectBooleanCheckbox value="#{regrasController.selecaoRegra.opcao3}" /></p:column>
                            <p:column ><p:selectBooleanCheckbox value="#{regrasController.selecaoRegra.opcao4}" /></p:column>
                            <p:column ><p:selectBooleanCheckbox value="#{regrasController.selecaoRegra.opcao5}" /></p:column>
                        </p:row>                           
                    </f:facet>  
                </p:panelGrid> 
                <br></br>

            <h:panelGroup layout="block" style="white-space:nowrap; margin-top:15px;"> 
                <p:separator/>                                                                                         <!--id="btnSubmit"-->         
         
                <p:commandButton  value="OK" action="#{regrasController.editarRegra}" icon="ui-icon-disk"  update="@('form')" onclick="editarRegraDialog.hide();">
                    <p:resetInput target="formTableTela" />   
                </p:commandButton>                 
                <p:commandButton value="Cancel" type="button" onclick="editarRegraDialog.hide();"/>  
            </h:panelGroup>          
                </h:form>
        </p:dialog> 
</ui:define>

</ui:composition>