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?

10,226

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>
Share:
10,226
Shruti
Author by

Shruti

Updated on June 22, 2022

Comments

  • Shruti
    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
      user3489875 about 10 years
      Could you add the code of your template MainTemplate.xhtml ?
    • Shruti
      Shruti about 10 years
      i have added. kindly see.
  • Shruti
    Shruti about 10 years
    so 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
    user3489875 about 10 years
    Did you try this: <li><h:form> <h:commandLink action="#{welcomeBean.logOutSession}" class="subAnchor" value="Log Out"/> </h:form></li>