Erreur d'analyse /page.xhtml: Erreur tracée [ligne: 42] L'entité «nbsp» a été référencée, mais n'a pas été déclarée


87

Je voudrais utiliser des espaces insécables dans ma page JSF. Je sais, en HTML simple, je pourrais utiliser  pour cela et cela fonctionne très bien. Cependant, quand je mets ces  dans une page Facelets, les erreurs suivantes sont commises:

Erreur d'analyse /page.xhtml: Erreur tracée [ligne: 42] L'entité "nbsp" a été référencée, mais pas déclarée.

Comment cela est-il causé et comment puis-je le résoudre?


montrer un peu plus de code ... où idi vous avez placé cela  exactement?
Daniel

Réponses:


182

Facelets est une technologie de visualisation basée sur XML. XML n'a que cinq entités prédéfinies . Le  n'est pas parmi eux. Cela ne fonctionne que lorsqu'il est utilisé en HTML brut ou dans l'ancien JSP (note: cela ne fonctionne pas dans JSPX car il est également basé sur XML!).

Pour résoudre ce problème, vous devez soit déclarer vous-même l'entité dans le doctype du fichier XHTML même contenant l'  entité,

<!DOCTYPE html [
    <!ENTITY nbsp "&#160;"> 
]>

ou, mieux, utilisez la notation décimale (hexa) à la place:

&#xA0; or &#160;

Dans un IDE moyen, il devrait être simple d'effectuer une recherche et de remplacer dans tous les fichiers et de remplacer chaque occurrence de &nbsp;par &#xA0;.


3
Utilisez la notation hexadécimale ou décimale. :-)
Nabin


10
  1. <![CDATA[&nbsp;]]>devrait bien fonctionner. Cela ne fonctionne pas à l' intérieur de la valeur d'attribut, cependant.

  2. Sinon, tant qu'il &amp;s'agit d'une entité prédéfinie en XML, vous pouvez essayer &amp;nbsp; - travaillé pour moi avec JSP basé sur XML. Cela devrait également fonctionner avec les attributs.


9

Pour moi, le doctype suivant permet &nbsp;:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Avec cela, j'ai pu faire quelque chose comme <xsl: variable name = "size" select = "substring-before (s: td [3], '& nbsp;')" />
slott

5

ajouter

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

en haut du fichier


4
Pourquoi cela a-t-il eu deux points négatifs, je me demande. C'est peut-être un peu trop concis mais c'est correct. L'entité n'a pas été définie dans le doctype et elle est définie lors de l'utilisation de la spécification fournie. Un an plus tard, quelqu'un publie exactement la même chose et obtient deux votes positifs.
Dilapidus

Je suis d'accord avec @Dilapidus, cela a fonctionné parfaitement pour moi dans Chrome et JBoss EAP 7 et Facelets Version 2.2
JGlass
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.