2012-03-30 9 views
5

Java Beanで\ nを使用していて、コンソールの変数の出力が正しく表示されています。一方、この値をBeanからJSFにフェッチしている間は、....... どのようにしてJSFの作業を\ nできますか?作成方法 <h:inputTextarea>

答えて

16

最も簡単な方法は、改行\nを保存したいテキストを含む親要素にCSS white-space: preを適用することです。このCSSスタイルクラスを考えると次のように

.preformatted { 
    white-space: pre; 
} 

あなたは、これを適用することができます:など

<div class="preformatted">#{bean.text}</div> 

または

<h:panelGroup layout="block" styleClass="preformatted">#{bean.text}</h:panelGroup> 

または

<h:outputText value="#{bean.text}" styleClass="preformatted" /> 

このスタイルプロパティは、ちょうど<textarea>要素がデフォルトで使用しているものとまったく同じです。また、disabled="true"またはreadonly="true"に設定することで、それを利用して編集不能にすることもできます。

<h:inputTextarea value="#{bean.text}" disabled="true" /> 

あなたはもちろんHTML <br/>要素によって\nの出現をすべて置き換えることができます。このようにして、white-space: preを使用せず、<textarea>要素ではない要素に表示することができます。方法の1つはfn:replace()を使用しています。

<h:outputText value="#{fn:replace(bean.text,'\\n','&lt;br/&gt;')}" escape="false" /> 

これは、white-space: preよりも醜いIMOです。

2

\nのすべての出現を</br>に置き換えて表示してください。

5

<h:inputTextarea>に値を送信する前に、\ nをすべて<br/>に置き換える必要があります。

Htmlは、改行には<br/>を使用し、\ nにはjavaと似ていません。

また、<h:outputText(ほとんどの場合...)にescape="false"を追加する必要があります。

1

<h:inputTextarea>を介してデータベースに記録されたテキストを調べると、特殊文字が保持されていることがわかりました。

このように、私が残酷な芸術であると思ったことを調べた後、JSFコンポーネントのデフォルト表示が実際に私を失望させていたことがわかった。

私のスタイルシートにwhite-space: pre-wrap;<p>を追加すると、JPA pojoのテキストが提供されていた<h:outputText>タグのこの問題が修正されました。私の場合は

preが文字によってではなく、言葉で包みましたので、私はpre-wrapではなく、preを必要としていました。

これが誰かを助けることを願っています!

関連する問題