2012-03-15 3 views
5

Я хочу реализовать страницу JSF с помощью AJAX. Это код страницы JSF:не определен компонент «голова»

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

Когда я загрузить страницу, я получаю эту ошибку:

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

Это код заголовка:

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

Аякса не работает, и это сообщение об ошибке появляется при загрузке страницы. Может быть, мне не хватает чего-то, что нужно добавить. Как я могу исправить код?

С наилучшими пожеланиями Питер

ответ

4

Попробуйте поставить <ui:composition> внутри <html> и вокруг его содержания в header.xhtml.

+0

Я отредактировал код таким образом: http://pastebin.com/gCFQsegf, но никаких изменений нет. Я все еще получаю сообщение об ошибке. –

+0

'ui: composition' требуется только в header.xhtml. Не знаю, что еще может быть неправильно. Вы можете попытаться удалить '' заголовки из ваших файлов, но сообщение об отсутствии '' на самом деле. – mrembisz

+0

Я добавил в страницу navigation.xhtml тег ui: composition. Оно работает. Спасибо! –

6

Ну, я думаю, вы должны изменить свой header.xhtml как этот

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

Убедитесь, что вы используете <h:head> - и не <head>.

Смежные вопросы