CommandLink is not in a jsf Form because i have added it to the template. However it is disabled. Is there an alternative way to enable it?
Since commandLink launch an action, you have to add a h:form
<h:form>
<h:commandLink action="#{welcomeBean.logOutSession}" class="subAnchor" value="Log Out"/>
</h:form>
Shruti
Updated on June 22, 2022Comments
-
Shruti almost 2 years
I have Added My commandLink (which is the logout link) into the template File which is not inside a jsf form.
MainTemplate.xhtml
<h:commandLink action="#{welcomeBean.logOutSession}" class="subAnchor" value="Log Out"> </h:commandLink>
on the webpage that uses the template, i have all the elements inside a jsf form:
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>
I was hoping that the logout would work once i use the template in a page with a jsf form. However, the logout commandLink shows error :
Log Out: This link is disabled as it is not nested within a JSF form.
I know a clear solution is to add this element separately into each of the xhtml pages that would use the template. But i want it to be added into the template itself as it is a common element in all the pages.
Any help would be deeply appreciated. Thank You! :)
Editing: here is the code of my 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>
-
user3489875 about 10 yearsCould you add the code of your template MainTemplate.xhtml ?
-
Shruti about 10 yearsi have added. kindly see.
-
-
Shruti about 10 yearsso do i just add tht logout button within jsf form or the whole of template? And wouldnt having a form in the template and the other pages create some kind of error? error of two forms existing etc?
-
user3489875 about 10 yearsDid you try this: <li><h:form> <h:commandLink action="#{welcomeBean.logOutSession}" class="subAnchor" value="Log Out"/> </h:form></li>