2011-01-10 6 views
4

データベースから静的テキストと動的値を組み合わせたテキストを出力する必要があるというユースケースがあります。フルテキストは、言語固有の静的テキストブロックを持つメッセージプロパティを使用して解決されます。エスケープされたテキストを出力でき、_with_ htmlの書式設定を可能にする標準のJSF方法またはオープンソースライブラリはありますか?

XSS攻撃を防ぐために出力テキストをエスケープする必要があります。

我々はまた、例えば、完全な文字列に書式を適用する必要があるしかし:

Hello <b>{username}</b>!

これは当然の擬似構文で、{username}は他の、実際のユーザ名に置き換えられる変数でありますテキストは静的であり、メッセージプロパティで定義されます(例:"Helloy <b>{0}</b>!")。

通常のJSF outputTextは、すべてをエスケープするか、何もエスケープしないので、私たちのフォーマットを破壊します。

可変フィールドの位置と順序は言語に依存しているため、これらのフラグメントから「実際の」JSFコンポーネントを作成することはできません(ドイツ語と英語の異なる語順など)。

Seamには、これに対処しているエレガントな解決策があるformattedTextというコンポーネントがあります。しかし、私たちはアプリケーションでSeamを使用することはできません。

類似のアプローチ/ライブラリはありますか?

答えて

2

JSTL fn:escapeXmlを出力パラメータに適用するだけです。

<h:outputFormat value="#{text['generic.welcome']}" escape="false"> 
    <f:param value="#{fn:escapeXml(user.name)}" /> 
</h:outputFormat> 
関連する問題