Vistas admin
Por último vamos con las vistas creamos en src/main/webapp el archivo plantilla.xhtml
<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:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<ui:insert name="header">
<ui:include src="encabezado.xhtml"></ui:include>
</ui:insert>
<ui:insert name="content">
<ui:include src="contenido.xhtml"></ui:include>
</ui:insert>
</h:body>
</html>
En el mismo directorio creamos la clase encabezado.xhtml
<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:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<ui:composition>
<div class="card">
<h:form>
<p:growl id="messages"/>
<p:menubar>
<p:submenu label="Administración Liga" icon="ui-icon-document">
<p:menuitem value="Información" />
<p:menuitem value="Administración Equipos" />
<p:separator />
</p:submenu>
</p:menubar>
</h:form>
</div>
</ui:composition>
</h:body>
</html>
Creamos el archivo contenido.xhtml
<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:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<ui:composition>
<h1>Bienvenido a Liga Azteca</h1>
</ui:composition>
</h:body>
</html>
Realizamos la vista login.xhtml
<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:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<div style="margin:0 auto;width:70%">
<ui:composition template="plantilla.xhtml" >
<ui:define name="content" >
<h:form>
<p:growl id="messagesLogin"/>
<p:panel header="Ingresar usuario y contraseña Liga Azteca Atizapan" footer="Tutosoftware">
<h:panelGrid columns="2" cellpadding="5">
<h:outputLabel value="Email:" for="email" style="color:white" />
<p:inputText id="email" value="#{loginView.email}" required="true" label="usuario">
</p:inputText>
<h:outputLabel value="Contraseña:" for="password" style="color:white" />
<p:password id="password" value="#{loginView.password}" required="true" label="password">
</p:password>
<f:facet name="footer">
<p:commandButton value="Acceder" action="#{loginView.loginLiga}" update="messagesLogin" > </p:commandButton>
</f:facet>
</h:panelGrid>
</p:panel>
</h:form>
</ui:define>
</ui:composition>
</div>
</h:body>
</html>
Creamos el segundo template que es el administrador en el mismo directorio creamos plantillaAdmin.xhtml
<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:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<ui:insert name="headerAdmin">
<ui:include src="encabezadoAdmin.xhtml"></ui:include>
</ui:insert>
<ui:insert name="contentAdmin">
<ui:include src="contenidoAdmin.xhtml"></ui:include>
</ui:insert>
</h:body>
</html>
Creamos el archivo encabezadoAdmin.xhtml
<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:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jstl/core">
<h:head>
</h:head>
<h:body>
<ui:composition>
<div class="card">
<h:form>
<p:growl id="messages"/>
<p:menubar>
<p:submenu label="Liga de Futbol Soccer Azteca Atizapan" icon="ui-icon-document">
<p:menuitem value="Generar Torneo" outcome="agregarTorneo.xhtml" />
<p:separator />
</p:submenu>
<p:submenu label="Acciones" icon="ui-icon-pencil">
</p:submenu>
<p:menuitem value="Salir" action="#{loginView.logout()}" icon="ui-icon-close" />
</p:menubar>
</h:form>
</div>
</ui:composition>
</h:body>
</html>
Creamos el archivo contenidoAdmin.xhtml
<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:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<ui:composition>
<h1>Liga de Futbol Azteca de Atizapan</h1>
<p>Elige la opción de menú que necesites realizar.</p>
</ui:composition>
</h:body>
</html>
Cremos el archivo admin.xhtml
<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:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<ui:composition template="plantillaAdmin.xhtml">
</ui:composition>
</h:body>
</html>
Creamos el archivo agregarTorneo.xhtml
<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:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<div style="margin:0 auto;width:70%">
<ui:composition template="plantillaAdmin.xhtml" >
<ui:define name="contentAdmin" >
<h:form id="form">
<p:growl id="messagesLogin"/>
<p:panel header="Agregar Torneo de Liga" footer="Tutosoftware 2021">
<h:panelGrid columns="3" cellpadding="5">
<h:outputLabel value="Nombre del Torneo:" for="nombreTorneo" style="color:white" />
<p:inputText id="nombreTorneo" value="#{torneoView.nombreTorneo}"
size="100" required="true" requiredMessage="Nombre del torneo requerido" >
</p:inputText>
<p:message for="nombreTorneo" ></p:message>
<h:outputLabel value="Cupo de equipos:" for="cantidadEquipos" style="color:white" />
<p:selectOneMenu id="cantidadEquipos" value="#{torneoView.cantidadEquipos}"
required="true" requiredMessage="Cupo requerido">
<f:selectItem itemLabel="Seleccionar número de equipos" itemValue=""/>
<f:selectItem itemLabel="2" itemValue="2"/>
<f:selectItem itemLabel="3" itemValue="3"/>
<f:selectItem itemLabel="4" itemValue="4"/>
<f:selectItem itemLabel="5" itemValue="5"/>
<f:selectItem itemLabel="6" itemValue="6"/>
<f:selectItem itemLabel="7" itemValue="7"/>
<f:selectItem itemLabel="8" itemValue="8"/>
<f:selectItem itemLabel="9" itemValue="9"/>
<f:selectItem itemLabel="10" itemValue="10"/>
<f:selectItem itemLabel="11" itemValue="11"/>
<f:selectItem itemLabel="12" itemValue="12"/>
<f:selectItem itemLabel="13" itemValue="13"/>
<f:selectItem itemLabel="14" itemValue="14"/>
<f:selectItem itemLabel="15" itemValue="15"/>
<f:selectItem itemLabel="16" itemValue="16"/>
<f:selectItem itemLabel="17" itemValue="17"/>
<f:selectItem itemLabel="18" itemValue="18"/>
<f:selectItem itemLabel="19" itemValue="19"/>
<f:selectItem itemLabel="20" itemValue="20"/>
<f:facet name="footer">
<p:divider styleClass="p-mt-0" />
<h:outputText value="19 opciones" style="font-weight:bold;color:white"/>
</f:facet>
</p:selectOneMenu>
<p:message for="cantidadEquipos" ></p:message>
<h:outputLabel value="Costo de inscripción:" for="costoInscripcion" style="color:white" />
<p:inputNumber id="costoInscripcion" value="#{torneoView.costoInscripcion}" modifyValueOnWheel="false"
size="40" required="true" requiredMessage="Costo de inscripción requerido" >
</p:inputNumber>
<p:message for="costoInscripcion" ></p:message>
<h:outputLabel value="Número de jugadores registrados por equipo:" for="numJugPorEquipo" style="color:white" />
<p:inputNumber id="numJugPorEquipo" value="#{torneoView.numJugPorEquipo}" modifyValueOnWheel="false"
size="3" required="true" requiredMessage="Numero de jugadores requerido" >
</p:inputNumber>
<p:message for="numJugPorEquipo" ></p:message>
<h:outputLabel value="Número de vueltas:" for="numVueltas" style="color:white" />
<p:selectOneMenu id="numVueltas" value="#{torneoView.numVueltas}"
required="true" requiredMessage="Número de vueltas requerido">
<f:selectItem itemLabel="Seleccionar número de vueltas" itemValue=""/>
<f:selectItem itemLabel="1" itemValue="1"/>
<f:selectItem itemLabel="2" itemValue="2"/>
<f:facet name="footer">
<p:divider styleClass="p-mt-0" />
<h:outputText value="2 opciones" style="font-weight:bold;color:white"/>
</f:facet>
</p:selectOneMenu>
<p:message for="numVueltas" ></p:message>
<h:outputLabel value="Refuerzos:" for="refuerzos" style="color:white" />
<p:inputNumber id="refuerzos" value="#{torneoView.refuerzos}" modifyValueOnWheel="false"
size="2" required="true" requiredMessage="Numero de refuerzos requerido" >
</p:inputNumber>
<p:message for="refuerzos" ></p:message>
<f:facet name="footer">
<p:commandButton value="Crear Torneo" action="#{torneoView.crearTorneo}" update="form" ></p:commandButton>
</f:facet>
</h:panelGrid>
</p:panel>
</h:form>
</ui:define>
</ui:composition>
</div>
</h:body>
</html>