Chciałbym używać nierozdzielających spacji na mojej stronie JSF. Wiem, w zwykłym HTML mógłbym użyć
do tego i to działa dobrze. Jednak kiedy umieszczam je
na stronie Facelets, wyświetla się następujący błąd:
Analiza błędów /page.xhtml: Error Traced [wiersz: 42] Odwołano się do encji „nbsp”, ale nie została ona zadeklarowana.
Jak to się dzieje i jak mogę to rozwiązać?
jsf
jsf-2
facelets
html-entities
Fahim Parkar
źródło
źródło
dokładnie to umieściłeś ?Odpowiedzi:
Facelets to technologia widoku oparta na języku XML. XML ma tylko pięć predefiniowanych jednostek . Nie
ma wśród nich. Działa tylko wtedy, gdy jest używany w zwykłym HTML lub w starszej wersji JSP (uwaga: nie działa w JSPX, ponieważ jest również oparty na XML!).Aby to naprawić, musisz sam zadeklarować jednostkę w typie dokumentu samego pliku XHTML zawierającego
jednostkę,<!DOCTYPE html [ <!ENTITY nbsp " "> ]>
lub lepiej, zamiast tego użyj notacji dziesiętnej (szesnastkowej):
W przeciętnym IDE powinno być trywialne wykonanie operacji „znajdź i zamień we wszystkich plikach” i zastąpienie każdego wystąpienia
przez 
.źródło
Spróbuj użyć
&#160;
. Aby uzyskać więcej informacji na temat jednostek, możesz skorzystać z adresu URL HTML ISO-8859-1 Referenceźródło
<![CDATA[ ]]>
powinno działać dobrze. Nie działa to jednak wewnątrz wartości atrybutu.Alternatywnie, o ile
&
jest to predefiniowana jednostka w XML, możesz spróbować&nbsp;
- pracowałem dla mnie z JSP opartym na XML. Powinno to działać również w przypadku atrybutów.źródło
Dla mnie następujący typ dokumentu umożliwia
:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
źródło
Dodaj
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
na początek pliku
źródło