0

PHP の nl2br() 関数のようなものを、JSF2/Spring で行われた現在のプロジェクトに最もエレガントに統合する方法を見つけようとしています。モデルクラスのようなものを使用してゲッターを簡単に作成できますreturn text.replaceAll("\n","<br/>");が、それはビュー関連のコードをそれが属していない場所に置くように思えます。データベースに実際の html コンテンツを保存することについても同じ感覚があります。これにはタグ/ELを使用するのが最もクリーンなソリューションだと思いますが、それを行うように見えるものを見つけることができませんでした。このようなものをどのように実装しますか?事前に感謝します。ヒントをいただければ幸いです。

4

2 に答える 2

1

テキストに HTML が含まれていないと仮定して、いずれかの CSS を使用します。

<div style="white-space: pre">#{bean.text}</div>

または、カスタム EL 関数を作成し、エスケープせずに表示します (Facelets は暗黙的に HTML をエスケープします)。

<div><h:outputText value="#{my:nl2br(bean.text)}" escape="false" /></div>

XSSがないことだけを絶対に確認する必要があります。

于 2012-11-23T12:16:13.547 に答える
1

そもそも、JSF は Web UI フレームワークです。そのため、ユーザーに出力すると予想されるものはすべて HTML として終了します (ただし、javascript は例外です)。したがって、MVC の重大な違反であるとは思いません (もしあったとしても)。たぶん、封筒を押して<br/>、置き換える代わりにテキスト内で直接使用することもできます\n

より一般的な意味では、テキストに異なる行/段落がある場合、より柔軟で標準的な解決策は、テキストをさまざまな要素に分割し、プレゼンテーション ロジックで処理させることです。したがって、プロパティの代わりに

 presentationPage.introductionText=Ipse Lorum ...sum.\nVini vidi vinci.

あなたはで終わるでしょう

 presentationPage.introductionText.par1=Ipse Lorum ...sum.
 presentationPage.introductionText.par2=vini vidi vinci.
于 2012-11-23T09:05:18.787 に答える