96

JSF ページで改行しないスペースを使用したいと考えています。プレーンな HTML でこれを使用できることはわかっていますが、これは正常に機能します。ただし、それら を Facelets ページに配置すると、次のようにエラーになります。

Error Parsing /page.xhtml: Error Traced [line: 42] エンティティ「nbsp」が参照されましたが、宣言されていません。

これはどのように発生し、どうすれば解決できますか?

4

5 に答える 5

191

Facelets は、XML ベースのビュー テクノロジーです。XML には、定義済みのエンティティが 5 つしかありません。その 中にはありません。プレーンな HTML またはレガシー JSP で使用された場合にのみ機能します (注: JSPX も XML ベースであるため、JSPX では機能しません!)。

 これを修正するには、エンティティを含む XHTML ファイルの doctype でエンティティを自分で宣言する必要があります。

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

または、代わりに (16 進数) 表記を使用することをお勧めします。

&#xA0; or &#160;

平均的な IDE では、「すべてのファイルを検索して置換」を実行し、出現するすべての&nbsp;byを置換するのは簡単&#xA0;です。

于 2012-10-22T13:27:44.453 に答える
14

を使ってみてください&amp;#160;。エンティティの詳細については、次の URL HTML ISO-8859-1 リファレンスを参照してください。

于 2012-10-22T13:30:06.197 に答える
12

私にとっては、次のdoctypeが有効になります&nbsp;:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
于 2016-04-29T15:27:46.647 に答える
9
  1. <![CDATA[&nbsp;]]>正常に動作するはずです。ただし、これは属性値内では機能しません。

  2. または、XML で事前定義されたエンティティである限り、&amp;試すことができます&amp;nbsp; - XML ベースの JSP でうまくいきました。これは、属性内でも機能するはずです。

于 2013-02-13T18:07:09.803 に答える