2010-04-01 3 views
3

Je viens de terminer le tutoriel d'introduction à Hibernate de Netbeans (http://netbeans.org/kb/docs/web/hibernate-webapp.html#01) et j'obtiens l'erreur suivante: "Cette page appelle un espace de noms XML déclaré avec le préfixe br mais pas taglibrary existe »Cette page appelle l'espace de noms XML déclaré avec le préfixe br mais aucune bibliothèque de tag n'existe

maintenant, je l'ai vu une question semblable ailleurs: http://forums.sun.com/thread.jspa?threadID=5430327 mais la réponse est non listée. Ou, si c'est le cas, alors il me manque clairement - ligne un de mon fichier index.xhtml lit "http://www.w3.org/1999/xhtml". Cela n'explique pas non plus pourquoi, lorsque je recharge localhost: 8080, le message disparaît.

Voici mon fichier index.xhtml:

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:f="http://java.sun.com/jsf/core"> 
    <ui:composition template="./template.xhtml"> 
     <ui:define name="body"> 
      <h:form> 
       <h:commandLink action="#{filmController.previous}" value="Previous #{filmController.pageSize}" rendered="#{filmController.hasPreviousPage}"/> 
       <h:commandLink action="#{filmController.next}" value="Next #{filmController.pageSize}" rendered="#{filmController.hasNextPage}"/> 
       <h:dataTable value="#{filmController.filmTitles}" var="item" border="0" cellpadding="2" cellspacing="0" rowClasses="jsfcrud_odd_row,jsfcrud_even_row" rules="all" style="border:solid 1px"> 
        <h:column> 
         <f:facet name="header"> 
          <h:outputText value="Title"/> 
         </f:facet> 
         <h:outputText value="#{item.title}"/> 
        </h:column> 
        <h:column> 
         <f:facet name="header"> 
          <h:outputText value="Description"/> 
         </f:facet> 
         <h:outputText value="#{item.description}"/> 
        </h:column> 
        <h:column> 
         <f:facet name="header"> 
          <h:outputText value=" "/> 
         </f:facet> 
         <h:commandLink action="#{filmController.prepareView}" value="View"/> 
        </h:column> 
       </h:dataTable> 
       <br/> 
       </h:form> 
      </ui:define> 
     </ui:composition> 
    </html> 
+0

La question concerne jsf et facelets, pas hiberner. – Bozho

+0

Eh bien, assez juste. Je passais simplement par un tutoriel et c'était le problème. – cwallenpoole

+0

Voir cette [question] (http://stackoverflow.com/questions/5177964/primefaces-warning-this-page-calls-for-xml-namespace) – Longshanks

Répondre

4

Le problème vient clairement de l'étiquette <br/> et facelets tente de l'interpréter comme une balise JSF/facelets avec un préfixe. Si nous suivons les normes, cette étiquette devrait ressembler à ceci: <br /> (avec un espace avant la barre oblique). Essayez-le de cette façon, et si cela ne fonctionne pas, essayez de le supprimer.

3

J'ai quelques années de retard, mais je viens de faire le même tutoriel Hibernate, et j'ai fait exactement la même erreur. Cependant, je ne pense pas que le problème soit lié au fichier index.xhtml. Et tandis que l'autre affiche est exact que les balises de saut doivent avoir un espace, que le changement n'empêche pas l'erreur « Cette page appelle à l'espace de noms XML déclaré avec le préfixe br mais pas taglibrary existe »

Le problème se trouve dans un autre xhtml fichier dans le tutoriel nommé browse.xhtml. Vous pouvez voir le contenu de ce fichier en utilisant le lien du didacticiel dans le post d'ouverture. Il contient une balise de suivi </html > sans correspondance et aucune référence à l'espace de noms http://www.w3.org/1999/xhtml. Coller le contenu de ce fichier dans un validateur HTML (par exemple, validator.w3.org) met en évidence les problèmes.

La solution qui a fonctionné pour moi était d'ajouter l'ouverture manquante <html> tag:

< html xmlns = "http://www.w3.org/1999/xhtml" >

Vous pouvez également enlever cette étiquette sans équivalent de fuite </html > et ajoutez xmlns = "http://www.w3.org/1999/xhtml" à l'ouverture < ui: composition tag >.