エラー解析/page.xhtml:トレースエラー[line:42]エンティティ「nbsp」が参照されましたが、宣言されていません


87

JSFページで改行しないスペースを使用したいのですが。私は知っている、プレーンHTML  でこれを使用でき、これは正常に動作します。しかし、それら をFaceletsページに配置すると、次のエラーが発生します。

エラー解析/page.xhtml:エラー追跡[行:42]エンティティ "nbsp"が参照されましたが、宣言されていません。

これはどのように引き起こされ、どうすれば解決できますか?


さらにいくつかのコードを表示...あなたが 正確にそれを配置したidi ?
ダニエル

回答:


182

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

この問題を解決するには、いずれかの必要性は非常に含むXHTMLファイルのDOCTYPEに実体自分自身を宣言するために 実体を、

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

または、代わりに(hexa)decimal表記を使用します。

&#xA0; or &#160;

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


3
16進または10進表記を使用します。:-)
Nabin


10
  1. <![CDATA[&nbsp;]]>正常に動作するはずです。ただし、これ属性値の内部では機能しません

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


9

私にとっては、次のdoctypeが有効になります&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;')" />のようなことができました
スロット

5

追加

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

ファイルの先頭に


4
なぜこれが2つのネガティブを獲得したのでしょうか。少し簡潔すぎるかもしれませんが、それは正しいです。エンティティはdoctypeで定義されておらず、提供された仕様を使用するときに定義されています。1年後、誰かがまったく同じものを投稿し、2つの賛成票を獲得します。
Dilapidus

@Dilapidusに同意します。これは、ChromeとJBoss EAP 7およびFaceletsバージョン2.2
JGlass
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.