Я хотел бы использовать неразрывные пробелы на моей странице JSF. Я знаю, что в обычном HTML я мог бы использовать
для этого, и это отлично работает. Однако, когда я помещаю их
на страницу Facelets, появляется следующая ошибка:
Ошибка синтаксического анализа /page.xhtml: обнаружена ошибка [строка: 42] Сущность «nbsp» была указана, но не объявлена.
Как это вызвано и как я могу решить эту проблему?
jsf
jsf-2
facelets
html-entities
Фахим Паркар
источник
источник
?Ответы:
Facelets - это технология просмотра на основе XML. XML имеет только пять предопределенных сущностей .
Среди них нет . Он работает только при использовании в обычном HTML или в устаревшем JSP (примечание: он не работает в JSPX, поскольку он также основан на XML!).Чтобы исправить это, вам нужно либо самостоятельно объявить объект в doctype того самого файла XHTML, который содержит
объект, либо<!DOCTYPE html [ <!ENTITY nbsp " "> ]>
или, лучше, используйте вместо этого (шестнадцатеричную) десятичную запись:
В среднестатистической среде IDE должно быть тривиально выполнять «поиск и замену во всех файлах» и заменять каждое вхождение
на 
.источник
Попробуйте использовать
&#160;
. для получения дополнительной информации об объектах вы можете обратиться по следующему URL-адресу HTML ISO-8859-1 Ссылкаисточник
<![CDATA[ ]]>
должно работать нормально. Однако это не работает внутри значения атрибута.В качестве альтернативы, если
&
это предопределенная сущность в XML, вы можете попробовать&nbsp;
- у меня работал с JSP на основе XML. Это также должно работать с атрибутами.источник
Для меня следующий doctype позволяет
:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
источник
Добавить
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
в начало файла
источник