2010-12-29 98 views
13

JSF(2.0)のh:outputTextに改行を挿入する方法がありますか(または「 - 」などのカスタム文字列)を文字列内の非常に長い単語に挿入する方法はありますか? 私の問題は、文字列内に非常に長い単語がスペースなしであると、データテーブル(PrimeFaces)が広すぎることです。これは、長いテキストが "普通の"単語で、次の単語が次の行に印刷されたときに機能します。h:文字列内の長い単語のoutputText改行

私はコンバーターを使用することができますが、これはまだ文字列内の長い単語を探して、テキストを表示するたびに切り取らなければならないことを意味します。これは、少量のデータでは何とか動作しますが、データベースが大きくなると処理能力が必要になります。

データベースに挿入する前に長い単語の文字列をスキャンすることもできます。これは、文字列を一度処理するだけで済みますが、元の文字列を完全に再構築できないことを意味しますそれが必要です。

これに入力がありますか?

は、事前にありがとうとよろしく、break-wordへの質問の要素の ロバート

+0

@ Robert M.こんにちは私は同じ問題があります。 Balus Cは私のために働いていない答えですが、私はjsf1.2を使用しています。 –

+0

BalusCのソリューションは、使用しているJSFのバージョンに依存しません。それは普通のCSSソリューションです。 styleClass属性はJSF 1.2に存在し、結果のHTML出力に「class」属性をレンダリングします。それが動作しない場合、これはあなたのHTML/CSSの問題です。親HTML要素の固定幅を設定しようとする可能性があります。 –

答えて

17

設定CSSプロパティword-wrap

.someClass { 
    word-wrap: break-word; 
} 
+1

これは私のために働いていません。 CSSクラスは、ファンクバグのCSSルールに一致して表示されていますが、なぜ長い単語が壊れていないのかはわかりません。 –

+2

@djaqeel:要素が固定幅であることが前提です。 – BalusC

+0

ありがとう。あなたが正しいです。私は固定幅を与えるとき、それは正常に動作しますが、私は%widhtを与えたいと思います。 %年齢幅では、折り返しは問題ありませんが、折り返しを適用する前に折り返し幅を計算したように、折り返し自体が全幅をとります。 –

11
<h:outputText value="Very Wordy&lt;br /&gt;Table Column&lt;br /&gt;Heading" escape="false" /> 

出力

Very Wordy 
Table Column 
Heading 
+0

出典:[blog.michaelscepaniak.com](http://blog.michaelscepaniak.com/jsf-render-line-breaks-in-the-outputtext-tag) – Kai

4

これにより

<h:outputText styleClass="someClass" /> 

を2つの段階

1)テーブルレイアウトとしてスタイルを適用することによって達成することができる:panelGrid

例:に固定:<h:panelGrid style="table-layout:fixed;">

2)次にスタイルを適用するワード・ラップ・ブレイク・ワードを<h:outputText />に転送します。

例えば:<h:outputText style="word-wrap:break-word;">

は、この情報がお役に立てば幸いです。むしろ時間よりinputTextarea:

0

あなたは時間を使うことができ

<h:inputTextarea rows="10" cols="50" readonly="true" value="multiline String" style="border-color: white" /> 
2

あなたは文字列に非常に長い単語を持っている場合は、同じようword-break: break-all;を使用することができます:outputTextのは、読み取り専用true属性と、このように境界線を削除し覚えていませんこれは:

<h:outputText value="111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" style="word-break: break-all;"/> 

ですが、CSS3が必要です。 リンク:word-break

関連する問題