Error Parsing /page.xhtml: Error Traced [line: 42] มีการอ้างอิงเอนทิตี“ nbsp” แต่ไม่ได้ประกาศ


89

ฉันต้องการใช้ช่องว่างที่ไม่ทำลายในหน้า JSF ของฉัน ฉันรู้ว่าใน HTML ธรรมดาฉันสามารถใช้ สำหรับสิ่งนี้ได้และมันก็ใช้ได้ดี อย่างไรก็ตามเมื่อฉันใส่สิ่งเหล่านี้ ในหน้า Facelets มันจะเกิดข้อผิดพลาดดังนี้:

Error Parsing /page.xhtml: Error Traced [line: 42] มีการอ้างถึงเอนทิตี "nbsp" แต่ไม่ได้ประกาศ

มันเกิดจากอะไรและฉันจะแก้ได้อย่างไร?


แสดงรหัสเพิ่มเติม ... idi ที่คุณวางไว้ ตรงไหน?
Daniel

คำตอบ:


186

Facelets เป็นเทคโนโลยีมุมมองตาม XML XML มีเพียงห้าหน่วยงานที่กำหนดไว้ล่วงหน้า  ไม่ได้ในหมู่พวกเขา ใช้งานได้เฉพาะเมื่อใช้ใน HTML ธรรมดาหรือใน JSP แบบเดิม (หมายเหตุ: ใช้ไม่ได้ใน JSPX เนื่องจากเป็น XML ด้วย!)

ในการแก้ไขปัญหานี้คุณต้องประกาศเอนทิตีด้วยตัวคุณเองในประเภทของไฟล์ XHTML ที่มี เอนทิตี

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

หรือดีกว่าให้ใช้สัญกรณ์ทศนิยม (hexa) แทน:

&#xA0; or &#160;

ใน IDE เฉลี่ยมันควรจะเป็นที่น่ารำคาญที่จะดำเนินการ "ค้นหาและแทนที่ในไฟล์ทั้งหมด" และแทนที่การเกิดขึ้นของทุกคนโดย&nbsp;&#xA0;


3
ใช้สัญกรณ์ฐานสิบหกหรือฐานสิบ :-)
บิน


10
  1. <![CDATA[&nbsp;]]>ควรทำงานได้ดี สิ่งนี้ใช้ไม่ได้ในค่าแอตทริบิวต์แม้ว่า

  2. หรือตราบใดที่&amp;เป็นเอนทิตีที่กำหนดไว้ล่วงหน้าใน XML คุณสามารถลองได้&amp;nbsp; - ทำงานให้ฉันด้วย JSP ที่ใช้ XML สิ่งนี้ควรทำงานภายในแอตทริบิวต์เช่นกัน


9

สำหรับฉันการเปิดใช้งานประเภทต่อไปนี้&nbsp;:

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

ด้วยวิธีนี้ฉันจึงสามารถทำบางอย่างเช่น <xsl: variable name = "size" select = "substring-before (s: td [3], '& nbsp;')" />
slott

5

เพิ่ม

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

ไปที่ด้านบนสุดของไฟล์


4
ทำไมสิ่งนี้ถึงได้รับสองเชิงลบที่ฉันสงสัย อาจจะรวบรัดเกินไปหน่อย แต่ถูกต้อง เอนทิตีไม่ได้กำหนดไว้ในประเภทหลักและถูกกำหนดเมื่อใช้ข้อมูลจำเพาะที่ให้ไว้ หนึ่งปีต่อมามีคนโพสต์สิ่งเดียวกันและได้รับการโหวตเพิ่มสองครั้ง
Dilapidus

ฉันเห็นด้วยกับ @Dilapidus สิ่งนี้เหมาะสำหรับฉันใน Chrome และ JBoss EAP 7 และ Facelets เวอร์ชัน 2.2
JGlass
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.