1

<rich:dataTable>JSFページがあります。

<rich:dataTable id="transactionTable" rendered="#{tellerBean.userTransactions.size() > 0}"
    value="#{tellerBean.userTransactions}" var="transaction">

検索ボタンを押すと、バッキング リストがいっぱいになり、テーブルを再レンダリングします。ただし、rendered属性はサーバー側であり、グリッドは最初から HTML に変換されないため、再レンダリングが失敗するため、これは機能しません。バッキング リストのサイズが 0 のときにグリッドを非表示にし、リストのサイズが > 0 のときにグリッドを表示するにはどうすればよいですか?

4

1 に答える 1

1

常にレンダリングされるコンポーネントにラップし、代わりに更新します。

<h:panelGroup id="transactionTableGroup">
    <rich:dataTable ... rendered="#{not empty tellerBean.userTransactions}">

    </rich:dataTable>
</h:panelGroup>

(属性の EL 式も改善したことに注意してくださいrendered。あなたの式は不器用で、レガシー JSP の代わりに Facelets を使用する場合にのみ XML 構文エラーを生成します)

以下も参照してください。

于 2012-10-24T14:05:18.490 に答える