2012-02-13 13 views
1

を上書き:今、私だけをorg.richfaces.component.html.HtmlColumn使用してJavaコードでテーブルを構築していRichFacesのHtmlColumnスタイルクラスを使用すると、以下のようstyleClassのを設定するには、EL式を使用することができますJSFで

<rich:column> 
<h:outputText value="12" id="sumOfAllValues" styleClass="#{!t330RowItems.showSpecialField ? 'rich-table-green' : 'rich-table-cell'}"/> 
</rich:column> 

次のHTMLが生成され

htmlColumn.setStyleClass("#{!t330RowItems.showSpecialField ? 'rich-table-green' : 'rich-table-cell'}"); 

<tbody id="j_id154:tb"> 
<tr class="rich-table-row rich-table-firstrow "> 
    <td class="rich-table-cell #{!t330RowItems.showSpecialField ? 'rich-table-green' : 'rich-table-cell'}" id="j_id154:0:j_id155">55</td> 
</tr> 

のThこれを行うときに問題がありますe問題はEL表現を評価していないことです。どのように私がそれを得ることができるかに関する任意のアイデアrich-table-cellまたはrich-table-greenをstyleClassとして持っていますか?

答えて

0

プレーンバニラの代わりにValueExpressionと設定する必要があります。StringExpressionFactory#createValueExpression()で作成できます。式ファクトリは、JSFコンテキストでApplication#getExpressionFactory()で取得できます。

だから、これは実行する必要があります。この大問題htmlColumn.setValueExpression( "styleClassの"、styleClassVE)の一部を解決し

ValueExpression styleClassVE = context.getApplication().getExpressionFactory() 
    .createValueExpression(context.getELContext(), "#{!t330RowItems.showSpecialField ? 'rich-table-green' : 'rich-table-cell'}", String.class); 

htmlColumn.setStyleClass(styleClassVE); 
// or htmlColumn.setValueExpression("styleClass", styleClassVE); 
+0

。唯一のことは次のようになります: 56。特別な行でない場合は、リッチテーブルセルが重複しています – plouw

+0

おそらく、条件内の '' rich-table-cell''を '' ''で置き換える必要がありますか?どんな状況下でどのような種類のHTML RichFacesが生成されるのか、あなたの正確な機能要件が何であるかわからないので、私は激しく推測しています。 '.rich-table-green'のCSSクラス定義に' .rich-table-cell'で設定されたスタイルを上書きさせるだけで十分です。 – BalusC

+0

行が特別な行である場合は、 56というように生成されます。リッチテーブルセルとリッチテーブルグリーンを持つ。しかし、より論理的な回避策が見つかった場合は、ValueExpressionのアイデアを使用してスタイルを上書きし、必要なプロパティだけを上書きします。感謝!! – plouw

関連する問題