Criar barra de menus em sistema com JSF

3 respostas
M

Pessoal,

É o seguinte, quero ajude de vocês para saber como fazer uma barra de menus em um sistema com JSF, pode ser com Facelets também. Quero que a barra de ferramentas fique constate, sem sumir quando clicar no botão, e os formulários serem carregados abaixo do menu.

Qual a maneira mais prática de fazer isso?

3 Respostas

G

Amigo, defina um template com facelets tendo como primeiro componente a barra de menu,
recomendo o p:menuBar do primefaces, ou o p:toolBar que da pra usar como menu também...

Desta forma basta utiliza esse template para todas as páginas.

Algo como..
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:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.prime.com.tr/ui">

    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <link type="text/css" rel="stylesheet" href="./css/skin.css"/>
        <title>Título</title>
    </h:head>

    <h:body>

        <h:form id="barraDeFerramentas">
            <p:toolbar>
                <p:toolbarGroup align="left">
                    <p:menuButton value="Menu 1">
                        <p:menuitem value="Item de Menu 1" action="pagina1" ajax="false"/>
                        <p:menuitem value="Item de Menu 2" action="pagina2" ajax="false"/>
                    </p:menuButton>
                    <p:commandButton value="Menu 2" action="pagina3" ajax="false"/>
                </p:toolbarGroup>
            </p:toolbar>
        </h:form>

        <div><ui:insert name="Conteudo"> Aqui vai o conteudo </ui:insert></div>

    </h:body>
</html>

e a pagina que utiliza o template

clienteDeTemplate.xhtml

<?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"
                template="./template.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">

    <ui:define name="Conteudo">
Conteúdo da página =)
    </ui:define>

</ui:composition>
B

maurijava,

Bom o que o gilvan.sfilho falou é legal, caso você utilize richfaces eu te aconselho a criar um página com o menu e depois só adiciona com include no seu template.

Fica tipo assim

menu.jsp

<f:subview id="menu">
		<h:form>
		
			<rich:toolBar>
				<rich:dropDownMenu rendered="#{menuControler.perfiladmin}">
					<f:facet name="label"> 
	                    <h:panelGroup>
	                     <h:outputText value="Cliente"/>
	                    </h:panelGroup>
	                </f:facet>
	                 <rich:menuItem submitMode="none" onclick="#{menuControler.documentlocation}Cliente/InsereCliente.jsf'" >
	                 	 <h:outputLink value="#{menuControler.url}Cliente/InsereCliente.jsf">
                        	<h:outputText value="Insere Clientes"></h:outputText>
                    	</h:outputLink>
                	</rich:menuItem>
                	  <rich:menuSeparator id="cliente" />
                	 <rich:menuItem submitMode="none" onclick="#{menuControler.documentlocation}Cliente/ListarClientes.jsf'" >
	                 	 <h:outputLink value="#{menuControler.url}Cliente/ListarClientes.jsf">
                        	<h:outputText value="Listar Clientes"></h:outputText>
                    	</h:outputLink>
                	</rich:menuItem>
				</rich:dropDownMenu>
				
				<rich:dropDownMenu rendered="#{menuControler.perfiladmin}">
					<f:facet name="label"> 
	                    <h:panelGroup>
	                     <h:outputText value="Funcionário"/>
	                    </h:panelGroup>
	                </f:facet>
	                <rich:menuItem submitMode="none" onclick="#{menuControler.documentlocation}Funcionario/InsereFuncionario.jsf'" >
	                 	 <h:outputLink value="#{menuControler.url}Funcionario/InsereFuncionario.jsf">
                        	<h:outputText value="Insere Funcionário"></h:outputText>
                    	</h:outputLink>
                	</rich:menuItem>
                	  <rich:menuSeparator id="funcionario" />
                	<rich:menuItem submitMode="none" onclick="#{menuControler.documentlocation}Funcionario/ListarFuncionario.jsf'" >
	                 	 <h:outputLink value="#{menuControler.url}Funcionario/ListarFuncionario.jsf">
                        	<h:outputText value="Listar Funcionários"></h:outputText>
                    	</h:outputLink>
                	</rich:menuItem>
				</rich:dropDownMenu>
				
				<rich:dropDownMenu rendered="#{menuControler.perfiladmin}">
					<f:facet name="label"> 
	                    <h:panelGroup>
	                     <h:outputText value="Projeto"/>
	                    </h:panelGroup>
	                </f:facet>
	                <rich:menuItem submitMode="none" onclick="#{menuControler.documentlocation}Projeto/InsereProjeto.jsf'" >
	                 	 <h:outputLink value="#{menuControler.url}Projeto/InsereProjeto.jsf">
                        	<h:outputText value="Inserir Projeto"></h:outputText>
                    	</h:outputLink>
                	</rich:menuItem>
                	  <rich:menuSeparator id="projeto" />
                	<rich:menuItem submitMode="none" onclick="#{menuControler.documentlocation}Projeto/ListarProjetos.jsf'" >
	                 	 <h:outputLink value="#{menuControler.url}Projeto/ListarProjetos.jsf">
                        	<h:outputText value="Listar Projetos"></h:outputText>
                    	</h:outputLink>
                	</rich:menuItem>
				</rich:dropDownMenu>
				
				<rich:dropDownMenu rendered="#{menuControler.perfiladmin}">
					<f:facet name="label"> 
	                    <h:panelGroup>
	                     <h:outputText value="Tarefa"/>
	                    </h:panelGroup>
	                </f:facet>
	                <rich:menuItem submitMode="none" onclick="#{menuControler.documentlocation}Tarefa/InsereTarefa.jsf'" >
	                 	 <h:outputLink value="#{menuControler.url}Tarefa/InsereTarefa.jsf">
                        	<h:outputText value="Insere Tarefa"></h:outputText>
                    	</h:outputLink>
                	</rich:menuItem>
                	  <rich:menuSeparator id="tarefa" />
                	<rich:menuItem submitMode="none" onclick="#{menuControler.documentlocation}Tarefa/ListarTarefas.jsf'" >
	                 	 <h:outputLink value="#{menuControler.url}Tarefa/ListarTarefas.jsf">
                        	<h:outputText value="Listar Tarefas"></h:outputText>
                    	</h:outputLink>
                	</rich:menuItem>
				</rich:dropDownMenu>
				
				<rich:dropDownMenu>
					<f:facet name="label"> 
	                    <h:panelGroup>
	                     <h:outputText value="Registro"/>
	                    </h:panelGroup>
	                </f:facet>
	                <rich:menuItem rendered="#{menuControler.perfiladmin}" submitMode="none" onclick="#{menuControler.documentlocation}Registro/ListarRegistro.jsf'" >
	                 	 <h:outputLink value="#{menuControler.url}Registro/ListarRegistro.jsf">
                        	<h:outputText value="Listar Registro"></h:outputText>
                    	</h:outputLink>
                	</rich:menuItem>
                	  <rich:menuSeparator id="registro" rendered="#{menuControler.perfiladmin}"/>
                	<rich:menuItem submitMode="none" onclick="#{menuControler.documentlocation}Registro/ListarTarefaFuncionario.jsf'" >
	                 	 <h:outputLink value="#{menuControler.url}Registro/ListarTarefaFuncionario.jsf">
                        	<h:outputText value="Registrar Ponto"></h:outputText>
                    	</h:outputLink>
                	</rich:menuItem>
				</rich:dropDownMenu>
			</rich:toolBar>
		</h:form>
</f:subview>

Na página que irá importar fica assim(ex.: no template):

<f:view>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Gestão Ponto - Deletar Tarefa</title>
</head>
<body>
		<jsp:include page="../Menu.jsp" flush="false">
			<jsp:param value="../Menu.jsp" name="menu"/>
		</jsp:include>
		<rich:panel>
			<f:facet name="header">
				<h:outputText>Deleção de Tarefas</h:outputText>
			</f:facet>
				<h:outputText value="#{tarefaControler.excessaodelete}"/>
		</rich:panel>
	</body>	
</html>  
</f:view>

[]'s

M

Era exatamente isso que eu tava precisando. Valeu gilvan.sfilho!

Criado 8 de fevereiro de 2011
Ultima resposta 27 de fev. de 2013
Respostas 3
Participantes 4