Error Parsing /page.xhtml: Error Traced [baris: 42] Entitas “nbsp” direferensikan, tetapi tidak dideklarasikan

89

Saya ingin menggunakan spasi tanpa putus di halaman JSF saya. Saya tahu, dalam HTML biasa saya dapat menggunakan  untuk ini dan ini berfungsi dengan baik. Namun, ketika saya meletakkannya  di halaman Facelet, maka kesalahannya sebagai berikut:

Error Parsing /page.xhtml: Error Traced [baris: 42] Entitas "nbsp" direferensikan, tetapi tidak dideklarasikan.

Bagaimana ini disebabkan dan bagaimana cara mengatasinya?

Fahim Parkar
sumber
tunjukkan beberapa kode lagi ... di mana idi Anda menempatkan itu  persis?
Daniel

Jawaban:

186

Facelet adalah teknologi tampilan berbasis XML. XML hanya memiliki lima entitas yang telah ditentukan sebelumnya . Tidak  ada di antara mereka. Ia hanya berfungsi jika digunakan dalam HTML biasa atau dalam JSP lama (catatan: ia tidak berfungsi di JSPX karena itu juga berbasis XML!).

Untuk memperbaikinya, Anda juga perlu mendeklarasikan entitas itu sendiri di doctype dari file XHTML yang paling berisi  entitas tersebut,

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

atau, lebih baik, gunakan notasi desimal (heksa) sebagai gantinya:

&#xA0; or &#160;

Dalam IDE rata-rata, sebaiknya lakukan "temukan dan ganti di semua file" dan mengganti setiap kemunculan &nbsp;oleh &#xA0;.

BalusC
sumber
3
Gunakan notasi heksadesimal atau desimal. :-)
Nabin
11

Coba gunakan &amp;#160;. untuk informasi lebih lanjut tentang entitas, Anda dapat merujuk url HTML ISO-8859-1 Referensi berikut

Sanjeevi.V
sumber
10
  1. <![CDATA[&nbsp;]]>harus bekerja dengan baik. Ini tidak berfungsi di dalam nilai atribut.

  2. Atau, selama &amp;merupakan entitas standar dalam XML, Anda dapat mencoba &amp;nbsp; - bekerja untuk saya dengan JSP berbasis XML. Ini harus bekerja dalam atribut juga.

Peter dan Serigala
sumber
9

Bagi saya, doctype berikut memungkinkan &nbsp;:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Oleg Khaschansky
sumber
Dengan ini saya dapat melakukan sesuatu seperti <xsl: variable name = "size" select = "substring-before (s: td [3], '& nbsp;')" />
slott
5

Menambahkan

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

ke bagian atas file

Игорь Долгополов
sumber
4
Mengapa ini mendapatkan dua negatif, saya bertanya-tanya. Ini mungkin agak terlalu ringkas tapi itu benar. Entitas tidak ditentukan di doctype dan ditentukan saat menggunakan spesifikasi yang disediakan. Setahun kemudian, seseorang memposting hal yang persis sama dan mendapat dua suara positif.
Dilapidus
Saya setuju dengan @Dilapidus, ini bekerja sempurna untuk saya di Chrome dan JBoss EAP 7 dan Facelet Version 2.2
JGlass