rich:dataTable をレンダリングしようとしましたが、条件付きレンダリングに関しては失敗しました。バッキング Bean が DB からフェッチするリストのサイズがゼロより大きい場合にのみレンダリングしたかったのです。
JSF-2.0、RichFaces-4 を使用しています。
シナリオは、右クリックする groupId を持っていることです。コンテキスト メニューで [CTN を表示] を選択すると、このグループのすべての CTN がデータ テーブルに表示されます。これは、「Display CTNs」を選択すると呼び出す JavaScript 呼び出しから始まります。a4j:jsFunction への GroupId の提供を処理します。
<rich:dataTable value="#{ctnGrpMgmtController.ctnDetailsList}"
var="ctnVar" id="ctnTable" rows="5"
rendered="#{not empty ctnDetailsList}">
上記は、以下の a4j:jsFunction の実行後にレンダリングする必要があります。
<a4j:jsFunction name="selectGroupForManagingCtns"
action="#{ctnGrpMgmtController.loadCTNsForAGroup}"
render="ctnListPanel,ctnTable">
<a4j:param name="name"
assignTo="#{ctnGrpMgmtController.groupId}" />
</a4j:jsFunction>
コンポーネント「ctnTable」を表示するには、F5 を実行する必要があります。これが問題の始まりです。