outputlink jsfcljs enlaces botones java templates jsf-2 xhtml

java - jsfcljs - CommandLink no está en un formulario jsf porque lo he agregado a la plantilla. Sin embargo, está deshabilitado. ¿Hay alguna forma alternativa de habilitarlo?



mojarra jsfcljs (1)

He añadido My commandLink (que es el enlace de cierre de sesión) en la plantilla Archivo que no está dentro de un formulario jsf.

MainTemplate.xhtml

<h:commandLink action="#{welcomeBean.logOutSession}" class="subAnchor" value="Log Out"> </h:commandLink>

en la página web que usa la plantilla, tengo todos los elementos dentro de una forma jsf:

NewWelcome.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" template="/webpages/templates/MainTemplate.xhtml"> <ui:define name="infomationPartOfBody"> <h:form> <div> Here i have all the page specific content </div> </h:form> </ui:define> </ui:composition>

Esperaba que el cierre de sesión funcionara una vez que utilizo la plantilla en una página con un formulario jsf. Sin embargo, el comando logoutLink muestra un error :

Cerrar sesión: este enlace está deshabilitado ya que no está anidado dentro de un formulario JSF.

Sé que una solución clara es agregar este elemento por separado en cada una de las páginas xhtml que usarían la plantilla. Pero quiero que se agregue a la plantilla en sí, ya que es un elemento común en todas las páginas.

Cualquier ayuda sería muy apreciada. ¡Gracias! :)

Edición: aquí está el código de mi MainTemplate.xhtml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"> <f:view> <h:head> <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/cupertino/jquery-ui.css"/> <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.0.js"></script> <script type="text/javascript" src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <script type="text/javascript" src="../JavaScriptPages/JQueryFile.js"></script> <title>State Transport Department- Work Schedule</title> <link rel="stylesheet" type="text/css" href="../CSS/CompleteTemplateCSS.css"/> <link rel="stylesheet" type="text/css" href="../CSS/templateCSS.css"/> </h:head> <h:body> <div class="container"> <div class="header"> <h:graphicImage id="img" value="http://s28.postimg.org/ksnr9zs5p/header.jpg" class="img" ></h:graphicImage> </div> <div class="menu"> <h:outputLabel class="welcomeNote" style="font-size: x-large; color: white; float: left; margin: 8px 0 0 5px; text-shadow:0 0 3px white" value="#{welcomeBean.fullname}" /> <ul class="ulForMyAccount"> <li> <h:outputLabel value="My Account" id="mainAnchor"/> <ul > <li> <h:link value="Change my Password" outcome="/webpages/ChangePasswordxhtml.xhtml" rendered="true" class="subAnchor"/> </li> <li><h:commandLink action="#{welcomeBean.logOutSession}" class="subAnchor" value="Log Out"> </h:commandLink> </li> </ul> </li> </ul> </div> <div class="contentBody"> <div class="menuTable"> <table class="templateBody" > <tr> <td class="navigationLink" > <ul><li> <h:link value="Home" outcome="/webpages/NewWelcome.xhtml" rendered="#{welcomeBean.home}" class="mainLinks"/> </li></ul> </td> </tr> <tr> <td class="navigationLink"> <ul> <li> <h:link value="My Schedule" outcome="/webpages/MyTask.xhtml" rendered="#{welcomeBean.myTask}" class="mainLinks"/> </li></ul></td> </tr> <tr> <td class="navigationLink"> <ul> <li> <h:link value="Employee Work Schedule" outcome="/webpages/EmpDutySched.xhtml" rendered="#{welcomeBean.workSchedule}" class="mainLinks"/> </li></ul></td> </tr> <tr> <td class="navigationLink"><ul> <li> <h:link value="Allocate Work" outcome="/webpages/AllocateTask.xhtml" rendered="#{welcomeBean.allocateWork}" class="mainLinks"/> </li></ul></td> </tr> <tr> <td class="navigationLink"><ul> <li> <h:outputLabel value="Report" rendered="#{welcomeBean.report}" class="reportMenu"/> </li></ul> <ul> <li><h:link value="Project Wise Report" outcome="/webpages/ProjectWiseReport.xhtml" rendered="true" class="reportItems"/></li> <li><h:link value="Employee Wise Report" outcome="/webpages/EmployeeWiseReport.xhtml" rendered="true" class="reportItems"/></li> </ul> </td> </tr> </table> </div> <ui:insert name="infomationPartOfBody"> </ui:insert> </div> <div class="footer"></div> </div> </h:body> </f:view> </html>


Dado que commandLink inicia una acción, debe agregar ah: formulario

<h:form> <h:commandLink action="#{welcomeBean.logOutSession}" class="subAnchor" value="Log Out"/> </h:form>