Ошибка в Parsing/page.xhtml: ошибка. Трассировка [строка: 42] Объект "nbsp" ссылался, но не был объявлен

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

Ошибка Parsing/page.xhtml: ошибка Трассировка [строка: 42] Объект "nbsp" ссылался, но не был объявлен.

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

Ответ 1

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

Чтобы исправить это, вам нужно либо объявить объект самостоятельно в doctype,

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

или использовать десятичную нотацию (hexa):

&#xA0; or &#160;

Ответ 2

  • <![CDATA[&nbsp;]]> должен работать нормально. Однако это не работает внутри значения атрибута.

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

добавить

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

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