web-dev-qa-db-ja.com

&や<などの特殊文字をJSFコンポーネントのvalue属性に挿入する方法は?

&<などの特殊文字をJSFコンポーネントvalue属性に挿入する方法

たとえば、次のようなものが必要です。

<h:outputText value="Tom & Jerry Show" />

これを試すと、次の例外が発生します。

javax.faces.view.facelets.FaceletException:解析エラー/foo.xhtml:Traced [line:15]エンティティ名は、エンティティ参照の「&」の直後になければなりません。

<の場合、次の例外が発生します。

javax.faces.view.facelets.FaceletException:Parsing Error /foo.xhtml:Error Traced [line:15]要素タイプ「h:outputText」に関連付けられた属性「value」の値に「<」文字を含めることはできません。

25
Rajat Gupta

これらを XMLエンティティ にエスケープする必要があります。

<h:outputText value="Tom &amp; Jerry Show" />

この問題はJSF自体に関連するのではなく、ビューテクノロジーに関連しています。 Faceletsを使用しているようです(これで問題ありません!)。ただし、FaceletsはXMLベースのビューテクノロジーであるため、テンプレートが整形式のXMLであり、そのまま表示されるすべての特殊文字が上記のようにエスケープされていることを確認する必要があります。

wikipedia には、needsが必要なときにいつでもXMLでエスケープする必要がある事前定義された文字エンティティのリストがありますそのまま表示します。次の文字エンティティです。

"     &quot;
&     &amp;
'     &apos;
<     &lt;
>     &gt;

こちらもご覧ください:

58
BalusC