Error al analizar /page.xhtml: Error rastreada [línea: 42] Se hizo referencia a la entidad "nbsp", pero no se declaró


88

Me gustaría usar espacios que no se rompan en mi página JSF. Lo sé, en HTML simple que podría usar  para esto y esto funciona bien. Sin embargo, cuando los pongo  en una página de Facelets, se produce un error de la siguiente manera:

Error al analizar /page.xhtml: Error rastreada [línea: 42] Se hizo referencia a la entidad "nbsp", pero no se declaró.

¿Cómo se produce esto y cómo puedo solucionarlo?


mostrar algo más de código ... ¿dónde idiotas lo colocaste  exactamente?
Daniel

Respuestas:


184

Facelets es una tecnología de visualización basada en XML. XML tiene solo cinco entidades predefinidas . El  no está entre ellos. Solo funciona cuando se usa en HTML simple o en JSP heredado (nota: no funciona en JSPX ya que también está basado en XML).

Para solucionar esto, debe declarar la entidad usted mismo en el tipo de documento del mismo archivo XHTML que contiene la  entidad,

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

o, mejor, use la notación decimal (hexa) en su lugar:

&#xA0; or &#160;

En un IDE promedio, debería ser trivial realizar un "buscar y reemplazar en todos los archivos" y reemplazar cada aparición de &nbsp;por &#xA0;.


3
Utilice la notación hexadecimal o decimal. :-)
Nabin


10
  1. <![CDATA[&nbsp;]]>debería funcionar bien. Sin embargo, esto no funciona dentro del valor del atributo.

  2. Alternativamente, siempre que &amp;sea ​​una entidad predefinida en XML, podría intentarlo &amp;nbsp; , funcionó para mí con JSP basado en XML. Esto también debería funcionar dentro de los atributos.


9

Para mí, el siguiente doctype habilita &nbsp;:

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

Con esto pude hacer algo como <xsl: variable name = "size" select = "substring-before (s: td [3], '& nbsp;')" />
slott

5

añadir

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

al principio del archivo


4
¿Por qué esto obtuvo dos negativos? Me pregunto. Tal vez sea un poco demasiado conciso, pero es correcto. La entidad no se definió en el tipo de documento y se define cuando se utiliza la especificación proporcionada. Un año después, alguien publica exactamente lo mismo y obtiene dos votos a favor.
Dilapidus

Estoy de acuerdo con @Dilapidus, esto funcionó perfecto para mí en Chrome y JBoss EAP 7 y Facelets Versión 2.2
JGlass
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.