4

データテーブルのコンテンツが空の場合、(特定のコンテンツを含む) フッターをレンダリングしたいと思います。

これを見つけました <f:facet> を条件付きでレンダリングするにはどうすればよいですか? しかし、メッセージが空でない場合にのみフッターをレンダリングするため、それは私の問題を実際には解決しません。

 <f:facet name="footer">
      <h:outputText value="List is empty" rendered="#{empty list}" />
 </f:facet>

リストが空の場合は機能しますが、空でない場合は、空の行がフッターとしてレンダリングされます...

他の回避策はありますか?ご協力ありがとうございました!MyFaces 2.0.13 を使用しています。

4

2 に答える 2

1

私の知る限り、JSF 1.2 でこれを行う簡単な方法はありません。

ただし、次の回避策を使用できます。

以下を使用して css クラスを作成しますdisplay: none

.hidden { display: none; }

dataTable で、footerClass属性を次のように指定します。

<h:dataTable footerClass="#{hideFooterCondition ? 'hidden' : ''}">

このようにして、フッターを非表示にする必要があるときに簡単に非表示にすることができます。

さらに、フッターが存在しない場合にブラウザーに送信されるデータを減らしたい場合は、renderedファセットのコンテンツの属性で同じ条件を使用できます。

<f:facet name="footer">
    <rich:datascroller for="myDataTable" rendered="#{not hideFooterCondition}" />
</f:facet>    
于 2012-11-07T23:52:12.767 に答える
-1

これを制御するには、ファセットの代わりに hpanel を使用できます。私が取り組んでいるいくつかの JSF アプリケーションでは、この手法をかなり使用しています。ビューで条件を使用することは、私が読んだことから、JSF では不適切な方法と見なされます。HTML:

<h:panelGroup rendered="#{isEmpty}">
  <h:outputText value="List is empty" />
</h:panelGroup>

バッカービーン:

boolean isEmpty = false;
if (list.isEmpty()) {
  isEmpty = true;
}
于 2012-09-06T15:08:27.920 に答える