Error Parsing /page.xhtml: Error Traced [riga: 42] L'entità "nbsp" è stata referenziata, ma non dichiarata


89

Vorrei utilizzare spazi unificatori nella mia pagina JSF. Lo so, in semplice HTML potrei usare  per questo e funziona bene. Tuttavia, quando li inserisco  in una pagina Facelets, viene visualizzato un errore come segue:

Error Parsing /page.xhtml: Error Traced [riga: 42] L'entità "nbsp" è stata referenziata, ma non dichiarata.

Come è causato e come posso risolverlo?


mostra un altro codice ... dove idi l'hai posizionato  esattamente?
Daniel

Risposte:


186

Facelets è una tecnologia di visualizzazione basata su XML. XML ha solo cinque entità predefinite . Il  non è tra questi. Funziona solo se utilizzato in HTML semplice o in JSP legacy (nota: non funziona in JSPX poiché è anche basato su XML!).

Per risolvere questo problema, devi dichiarare tu stesso l'entità nel doctype del file XHTML che contiene l'  entità,

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

o, meglio, usa invece la notazione decimale (esadecimale):

&#xA0; or &#160;

In un IDE medio dovrebbe essere banale eseguire un "trova e sostituisci in tutti i file" e sostituire ogni occorrenza di &nbsp;by &#xA0;.


3
Usa la notazione esadecimale o decimale. :-)
Nabin


10
  1. <![CDATA[&nbsp;]]>dovrebbe funzionare bene. Tuttavia, questo non funziona all'interno del valore dell'attributo.

  2. In alternativa, fintanto che &amp;è un'entità predefinita in XML, potresti provare &amp;nbsp; - ha funzionato per me con JSP basato su XML. Questo dovrebbe funzionare anche all'interno degli attributi.


9

Per me il seguente doctype abilita &nbsp;:

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

Con questo sono stato in grado di fare qualcosa come <xsl: variable name = "size" select = "substring-before (s: td [3], '& nbsp;')" />
slott

5

Inserisci

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

all'inizio del file


4
Perché questo ha ottenuto due aspetti negativi, mi chiedo. Forse è un po 'troppo conciso ma è corretto. L'entità non è stata definita nel doctype ed è definita quando si utilizzano le specifiche fornite. Un anno dopo, qualcuno pubblica la stessa identica cosa e ottiene due voti positivi.
Dilapidus

Sono d'accordo con @Dilapidus, questo ha funzionato perfettamente per me in Chrome e JBoss EAP 7 e Facelets versione 2.2
JGlass
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.