2

Toadなどのデータベースツールと同様に、データベースに動的にクエリを実行してページにデータを表示するWebページがあります(もちろん、閉じていません:)、例としてのみ)。

問題は、ページに表示されるときにデータがトリミングされることです。これは、JSFを使用してデータを表示する方法です

<h:outputText value="#{record[columnIndex].toDisplayString()}" />

それはhtmlレンダリングに関するものだと思います。私は何をすべきか?HTML エンコーダーを作成しますか? どのように?助けていただければ幸いです。

4

1 に答える 1

15

<h:outputText>値をまったくトリムしません。

おそらく、値の先頭/末尾のスペース、タブ、改行、改行などの空白について話しているのでしょう。デフォルトでは、HTML マークアップではまったく意味がありません。HTML ソース コードの一部になるだけで、HTML プレゼンテーションにはなりません。たとえば、改行は HTML では文字<br>ではなく要素で表され\nます。

HTML ソース コードと同じように HTML 要素ノードの空白を保持したい場合は、それを保持するために親 HTML 要素の CSSwhite-spaceプロパティをに設定する必要がありますpre。ブロック要素で行を折り返す場合は、 を使用しますpre-wrap

例えば

<h:outputText ... styleClass="preformatted" />

.preformatted {
    white-space: pre-wrap;
}

別の方法は、テキストを有効な HTML マークアップに自分で変換することです。\nたとえば、出現するすべての文字を文字列で置き換え<br/>ます。これには EL 関数を使用できます。

以下も参照してください。

于 2012-04-13T14:43:56.990 に答える