Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

no "head" component has been defined

Tags:

jsf

jsf-2

I want to implement JSF page with AJAX. This is the code of the JSF page:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"    
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
        <ui:insert name="header">           
            <ui:include src="header.xhtml"/>         
        </ui:insert>
    </h:head>
    <h:body>

        <h1><img src="resources/css/images/icon.png" alt="NVIDIA.com" /> Settings Center</h1>
        <!-- layer for black background of the buttons -->
        <div id="toolbar" style="margin: 0 auto; width:1180px; height:30px; position:relative;  background-color:black">
            <!-- Include page Navigation -->
            <ui:insert name="Navigation">           
                <ui:include src="Navigation.xhtml"/>         
            </ui:insert>

        </div>  

        <div id="greenBand" class="ui-state-default ui-corner-allh" style="position:relative; top:35px; left:0px;"> 
            <h:graphicImage alt="Application Settings"  style="position:relative; top:-20px; left:9px;"  value="resources/images/logo_application_settings.png" />
        </div>
        <div id="main" style="margin: 0 auto; width:1190px; height:700px; position:absolute;  background-color:transparent; top:105px">

            <div id="mainpage" style="margin: 0 auto; width:1190px; height:500px; position:absolute;  background-color:transparent; top:80px">

                <div id="settingsdiv" style="width:350px; height:400px; position:absolute;  background-color:r; top:20px; left:1px">
                    <h:panelGrid columns="2">
                        <h:panelGroup>User Session Timeout</h:panelGroup>
                        <h:panelGroup>
                            <h:selectOneMenu value="#{ApplicationController.settingValue('SessionTTL')}">
                                <f:selectItem itemValue="one" itemLabel="Option one" />
                                <f:selectItem itemValue="two" itemLabel="Option two" />
                                <f:selectItem itemValue="three" itemLabel="Option three" />
                                <f:selectItem itemValue="custom" itemLabel="Define custom value" />
                                <f:ajax render="input" />
                            </h:selectOneMenu>
                            <h:panelGroup id="input">
                                <h:inputText value="#{ApplicationController.settingValue('SessionTTL')}" rendered="#{bean.type == 'custom'}" required="true" />
                            </h:panelGroup>            
                        </h:panelGroup>

                        <h:panelGroup>Maximum allowed users</h:panelGroup>
                        <h:panelGroup>#{ApplicationController.settingValue('MaxUsersActive')}</h:panelGroup>                                                                     
                    </h:panelGrid>                                                             

                </div>   

                <div id="settingslayer" style="width:350px; height:400px; position:absolute;  background-color:transparent; top:20px; left:400px">



                </div>   

                <div id="settingspanel" style="width:350px; height:400px; position:absolute;  background-color:transparent; top:20px; left:800px">


                </div>   



            </div>  
        </div>

    </h:body>
</html>

When I load the page I get this error:

One or more resources have the target of "head", but no "head" component has been defined within the view.

This is the code of the header:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"    
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">


    <title>Settings Center</title>
    <link href="resources/css/helper.css" media="screen" rel="stylesheet" type="text/css" />

    <link href="resources/css/dropdown.css" media="screen" rel="stylesheet" type="text/css" />
    <link href="resources/css/default.advanced.css" media="screen" rel="stylesheet" type="text/css" />

    <!--[if lt IE 7]>
    <script type="text/javascript" src="js/jquery/jquery.js"></script>
    <script type="text/javascript" src="js/jquery/jquery.dropdown.js"></script>
    <![endif]-->

    <!-- / END -->



</html>

The Ajax is not working and this error message appears when I load the page. Maybe I'm missing something to add. How I can fix the code?

Best wishes Peter

like image 545
Peter Penzov Avatar asked Mar 15 '12 10:03

Peter Penzov


2 Answers

Well, I guess you need to edit your header.xhtml like this

<html  xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"    
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <ui:composition>
     <title>index</title>
        <h:head>
            <link rel="stylesheet" href="style.css" type="text/css" 
              media="screen"/>
            <script>....
             </script>
        </h:head>

Make sure that you use <h:head> - and not <head>.

like image 113
Hend3li Avatar answered Oct 15 '22 09:10

Hend3li


Try to put <ui:composition> inside <html> and around its content in header.xhtml.

like image 24
mrembisz Avatar answered Oct 15 '22 10:10

mrembisz