jboss seam、richfaces 3.x、jsf 1.x アプリケーションを jboss seam 2.3、richfaces 4、jsf 2.x に移行しています。いくつかのデータを表示する rich:dataTable があります。列のスタイリングは、最初のロードで機能する値式を使用して評価されます。私の要件は、行をクリックするたびに、クリックされた行オブジェクトを選択済みとして設定するバッキング Bean メソッドへの呼び出しがあり、ajax の完了時にテーブルを再度レンダリングすることですが、選択した行にクラスが適用されないか、クリックされたもの。タグに含まれるcssファイルで定義されたクラスがあります。
My view Code goes here:
<rich:dataTable id="table" value="#{backingBean.getRows()}" var ="top" onrowClick="#{rich:element('rowClickButton')}.click();">
<rich:column styleClass="#{top.selected ? 'selected':'unselected'>
<a4j:commandButton id="rowClickButton" style="display:none" render="#{top.selected ? 'table':null} action ="#{bean.setRowclicked(top)}"/>
<h:outputText value="First Column"/>
</rich:column>
<rich:column styleClass="#{top.selected ? 'selected' : 'unselected'>
<h:outputText value="Second Column"/>
</rich:column>
My Backing Bean goes here
public class BackingBean(){
public List<Rows> getRows(){
List<Rows> rows = new ArrayList<Rows>();
rows.add(row1);
rows.add(row2);
return rows ;
}
public void setRowClicked(top){
top.selected(true);
}
}
PS : a4j:ajax の rowClick が機能せず、オブジェクト 'top' をバッキング Bean に渡す必要があるため、ボタンを作成して列内に非表示にするアプローチをとっています。最適化またはこれに対するより良いアプローチまた、非常に高く評価され、歓迎されています。