Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

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>
like image 902
Shruti Avatar asked Apr 15 '14 03:04

Shruti


People also ask

What is H command link in JSF?

The “ h:commandLink ” tag is released since JSF 1.x, which is generate a link act like a submit button when clicked. The “ value ” attribute is rendered as the anchor text, “ action ” attribute is determined the target URL of the HTML “ href ” attribute.

What is outputlink in JSF?

The “h:outputLink” tag is released in JSF 1.x, the body of the tag is rendered as the anchor text, “value” attribute is rendered as the value of the HTML “href” attribute directly, see examples : 1. outputLink //JSF <h:outputLink>Login page</h:outputLink> //HTML output <a href="currentpage.xhtml">Login page</a>

What is a comma key in JSF?

A key, typically combined with a system-defined metakey, that gives focus to an element Comma- or space-separated list of character encodings for a form. The accept-charset attribute is specified with the JSF HTML attribute named acceptcharset.

What is the “h-link” tag in JSF?

The “h:link” tag is a new tag in JSF 2.0, the “value” attribute is rendered as the anchor text, “outcome” attribute is determined the target URL of the HTML “href” attribute. See examples : 1. link + “outcome” //JSF <h:link value="Login page" outcome="login" /> //HTML output <a href="/JavaServerFaces/faces/login.xhtml">Login page</a>


1 Answers

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>
like image 177
user3489875 Avatar answered Sep 28 '22 16:09

user3489875