J'aimerais utiliser des espaces insécables dans ma page JSF. Je sais, en HTML simple, je pourrais utiliser
pour cela et cela fonctionne bien. Cependant, quand je mets ces
dans une page Facelets, il se trompe comme suit:
Error Parsing /page.xhtml: Error Traced [ligne: 42] L'entité "nbsp" a été référencée, mais non déclarée.
Comment cela est-il causé et comment puis-je le résoudre?
Facelets est une technologie d'affichage basée sur XML. XML a seulement cinq entités prédéfinies . Le
n'est pas parmi eux. Il ne fonctionne que lorsqu'il est utilisé en HTML pur ou dans JSP classique (remarque: cela ne fonctionne pas dans JSPX car il est également basé sur XML!).
Pour résoudre ce problème, vous devez soit déclarer l’entité vous-même dans le doctype du fichier XHTML contenant le
entité,
<!DOCTYPE html [
<!ENTITY nbsp " ">
]>
ou, mieux, utilisez la notation décimale (hexa) à la place:
  or  
Dans une moyenne IDE, il devrait être trivial d'effectuer une "recherche et remplacement dans tous les fichiers" et de remplacer toutes les occurrences de
par  
.
Essayez d'utiliser &#160;
. pour plus d'informations sur les entités, vous pouvez vous référer à l'URL suivante Référence HTML ISO-8859-1
<![CDATA[ ]]>
devrait fonctionner correctement. Ceci ne fonctionne pas fonctionne à l'intérieur de la valeur d'attribut, cependant.
Sinon, tant que &
est une entité prédéfinie en XML, vous pouvez essayer &nbsp;
- a travaillé pour moi avec JSP basé sur XML. Cela devrait également fonctionner dans les attributs.
Pour moi, le doctype suivant permet
:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
ajouter
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
vers le haut du fichier