Faceletes em jsf 2.0 + primefaces

2 respostas
douglascst90

Ola amigos td bem?

Sei que ja existe esses tipo de topicos criado mais nenhum solucionou meu problema.

Tenho uma pagina JSF onde tenho os menus, e nos menus varios submenus de cadastro, o problema q em cada tela de cadastro tenho que inserir todos os menus, gostaria de fazer um template. Ja pesquisei aqui mas nao resolvi meu problem, sera que algem pode me ajudar com isso? Obrigado.

2 Respostas

A

cara,

vc deve criar um ui:define para seu menu, pois quando vc navegar ate a pagina de cadastro, vc substitui o menu.

espero q ajude.

t+

H

Eu fiz isso utilizando uma pagina como template (template/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:ui="http://java.sun.com/jsf/facelets"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui">

<h:head>
	<title>#{pageControllerMB.title}</title>
</h:head>
<h:body>
	<f:view>
		<h:form id="form">
			<div id="container">
				<div id="cabecalho">
					<ui:insert name="cabecalho">
						<ui:include src="cabecalho.xhtml" />
					</ui:insert>
				</div>
				<div id="corpo">
					<ui:insert name="corpo">

					</ui:insert>
				</div>
                         </div>
		</h:form>
	</f:view>

</h:body>

</html>

Na pagina cabecalho.xhtml, coloquei o menu :

<?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:ui="http://java.sun.com/jsf/facelets"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui">

<h:body>
	<f:view>
		<ui:composition>					

			<div id="menu">
				<p:menubar autoSubmenuDisplay="true" styleClass="menuBar">
					<p:menuitem value="Home" url="#{pageControllerMB.home}" />					
				</p:menubar>
			</div>

		</ui:composition>
	</f:view>
</h:body>
</html>

E em cada pagina criada, informo qual o template e adiciono o corpo da pagina:

<!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"
	xmlns:p="http://primefaces.prime.com.tr/ui">
<h:body>
	<ui:composition template="/template/template.xhtml">
		<ui:define name="corpo">

			<p:panel styleClass="painelGeral, painelHome" header="Ajudando você a construir seu futuro">
				<p:imageSwitch effect="zoom" slideshowAuto="true"
					slideshowSpeed="4000">
					<ui:repeat value="#{homeMB.imagensSlide}" var="image">
						<p:graphicImage value="#{image}" styleClass="imageSlide" />
					</ui:repeat>
				</p:imageSwitch>
			</p:panel>

		</ui:define>
	</ui:composition>
</h:body>

</html>

Espero ter ajudado.

Hugo

Criado 28 de setembro de 2011
Ultima resposta 28 de set. de 2011
Respostas 2
Participantes 3