2012-05-08 11 views
0

私はいくつかのテキストの魔法使いをhtmlの<code>タグで囲んでいます。しかし、スタイリングはサーバー側のクラスで行われます。例えば:htmlコードのテキストのスタイリング

myValue.replaceAll(" " + textToStyle + " ", " <span style=\"color: orange;\"> " + textToStyle + "</span> "); 

このラインについて<code>タグでラップされたテキストとして行きます。テキストは、JSFのデータテーブルに表示されます。

<h:column> 
    <code class="dt_row"> 
     #{myList.myValue} 
    </code> 
</h:column> 

<code>タグCSSクラス:

.dt_row { 
    height: 8px; 
    margin: 3px 3px 3px 3px; 
    color: #000000; 
    font-size: 12px; 
} 

HTMLはコードはすべてのタグに表示されているブラウザに表示されたときに問題があります。私はそれが欲しい、この<span style=\"color: orange;\">はページに表示されますが、テキスト値はオレンジ色で表示されます。

これを実現する方法はありますか?

+0

私はあなたの最後の行の近くにあなたを失いました。エスケープを無効にしますか? – adarshr

+0

はい、エスケープをオフにしたいと思います。例えば、私の質問でclass = "dt_row"の場合、class属性は青色で、例えばクラスではありません。クラス

答えて

4

代わりの

#{myList.myValue} 

(そうでない場合、フレームワークは、文字列をエスケープします...)の作業を行う必要がありますがfalseに "エスケープ" を設定

<h:outputText value="#{myList.myValue}" escape="false" /> 

をしようとします。

+0

完璧です。ありがとう:) –

2

もっとエレガントな方法は、時間のスタイル属性を使用することです:outputTextのコンポーネントと例えば色の豆を参照:

申し訳
<h:column> 
    <code class="dt_row"> 
     <h:outputText value="#{myList.myValue}" style="color: #{myList.color};" /> 
    </code> 
</h:column> 
+0

効果的には、このソリューションははるかにエレガントです。おそらく生産環境で採用されるだろう。 – javatutorial

+0

myList.myValueから来たすべての値を強調表示する場合は、はい、私は同意します。しかし、私の場合、値には複数の単語が含まれていますが、強調表示する必要があるのは1つだけです。だから、以前のソリューションが私のために最善です。 –

関連する問題