2012-03-15 15 views
5

Quiero implementar la página JSF con AJAX. Este es el código de la página JSF:no se ha definido ningún componente "cabeza"

<?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> 

Cuando me carga la página me sale este error:

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

Este es el código de la cabecera:

<?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> 

El Ajax no funciona y este mensaje de error aparece cuando cargo la página. Tal vez me falta algo para agregar. ¿Cómo puedo arreglar el código?

mejores deseos Peter

Respuesta

4

Trate de poner <ui:composition> dentro <html> y alrededor de su contenido en header.xhtml.

+0

He editado el código de esta manera: http://pastebin.com/gCFQsegf pero no hay cambios. Todavía recibo el mensaje de error. –

+0

'ui: composition' solo es necesario en header.xhtml. No tengo idea de qué más podría estar mal. Puede tratar de eliminar los encabezados '' de sus archivos, pero el mensaje es sobre falta '' de hecho. – mrembisz

+0

Agregué en la página navigation.xhtml la etiqueta ui: composition. Funciona. ¡Gracias! –

6

Bueno, supongo que necesita para editar su header.xhtml como esto

<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> 

Asegúrese de que utiliza <h:head> - y no <head>.

Cuestiones relacionadas