Синтаксический анализ ошибки /page.xhtml: трассировка ошибки [строка: 42] Ссылка на сущность "nbsp", но не объявленная

Я хотел бы использовать неразрывные пробелы на моей странице JSF. Я знаю, в простом HTML я мог бы использовать   для этого и работает нормально. Тем не менее, когда я ставлю эти   на странице Facelets, он ошибается следующим образом:

Синтаксический анализ ошибки /page.xhtml: трассировка ошибки [строка: 42] Ссылка на сущность "nbsp", но не объявленная.

Как это вызвано и как я могу решить это?

5 ответов

Решение

Facelets - это технология представления на основе XML. XML имеет только пять предопределенных сущностей.   не среди них. Он работает только при использовании в простом HTML или в устаревшей JSP (примечание: он не работает в JSPX, поскольку он также основан на XML!).

Чтобы это исправить, вам нужно либо объявить сущность самостоятельно в типе файла XHTML, содержащем   юридическое лицо,

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

или, лучше, вместо этого используйте десятичную запись (гекса):

&#xA0; or &#160;

В средней IDE должно быть тривиально выполнять "поиск и замену во всех файлах" и заменять каждый случай &nbsp; от &#xA0;,

Для меня следующий доктайп позволяет &nbsp;:

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

Попробуйте использовать &amp;#160;, Для получения дополнительной информации об объектах вы можете обратиться по ссылке URL HTML ISO-8859-1.

  1. <![CDATA[&nbsp;]]> должно работать нормально. Это не работает внутри значения атрибута, хотя.

  2. В качестве альтернативы, пока &amp; это предопределенная сущность в XML, вы можете попробовать &amp;nbsp; - работал для меня с JSP на основе XML. Это должно работать и в атрибутах.

Добавлять

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

в начало файла

Другие вопросы по тегам