- - PR -
JSFのdataTableについて
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-07 13:28
いつもお世話になっております。
ただ今JSFを使用した開発を進めておりますが、いくつか実装方法をどうするのか悩んでいる部分があり、 ご助言頂ければと思い投稿させていただきました。 悩んでいる部分というのは、以下の2つです。 1. dataTableでの動的にColumnを生成したい場合の最適解 2. dataTableのColumnのヘッダに表示する値を動的に指定すると表示されない 1に関しては、コンポーネントバインディングを使用したり、 Columnを予め予想される最大数を用意しておきrenderedで切り替えるなど、 いくつか実現する方法は確認しているのですが、今現在皆さんはどの様にしているのか というのが気になった次第です。 #ほとんどの方がMyFaces等を使っているのでしょうか。。 2に関しても1と被ってくる部分ではあるのですが、私の環境ですと以下の様な現象が起こっています。 <h:dataTable var="item" value="#{bean.result}" > <h:column id="column1" > <f:facet name="header"> <h:outputText value="#{item.name}" /> </f:facet> <h:outputText value="#{item.value}" /> </h:column> </h:dataTable> この様な場合に#{item.value}は問題なく取得も出来表示されるのですが、 #{item.name}の方は表示されません。 (name,value共に値は確実に入っているという前提です) 尚、#{item.value}をヘッダ部に入れ替えても同じ現象が発生します。 そもそもdataTableのヘッダ部には動的な値を指定できないのでしょうか? 以上、どんな事でも結構ですのでご助言頂けたらと思います。 環境: JSF実装 ... IBM JSF 稼働環境 ... WebSphere Portal5.0.2 (J2EE1.3, JRE 1.3) #少々特殊ですが,JSF RIの場合などでは..という風にお答え頂いて構いません。 どうぞよろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2006-07-07 13:55
rendered="#{bean.numColumns > 5}"のような感じでしょうか。
そんなところでしょう。
当然です。dataTableでは、rowIndexを0からインクリメントしながらループ処理でレンダリング(その他の処理も)を行い、その時、ループ内でvarで指定した変数をrequestスコープで束縛します。header, footerはループの外なのでvar変数は束縛されていません。 [ メッセージ編集済み 編集者: よしだひろゆき 編集日時 2006-07-07 13:56 ] | ||||||||||||
|
投稿日時: 2006-07-07 14:37
私はMyFacesを使ってますので、カラム数が動的に変化する場合はTomahawkの「<t:columns>」や「<t:dataList>」で実装しています。
Tomahawk 1.1.3はJSF RIとの互換性を強く意識している様ですので、IBM JSFでも使えるかもしれません(未確認)。 過去の類似情報 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=27968&forum=12&7 | ||||||||||||
|
投稿日時: 2006-07-07 20:57
よしださん、t_yamoさんご返信ありがとうございます。
なるほど。。非常に参考になります。 確かに考えてみれば出来るはずがないですね。 そうなると1のrenderedで切り替えというのも、無理そうですね。 もともと構想としては、Columnのrendered属性にvar変数の値が入っているかの計算式を入れて、 Column毎に表示、非表示を判断しようと考えていたのですが、この方法も無理ですね。
MyFacesは標準のものと比べるとはるかに拡張機能が豊富ですし、 一度採用してみたいのですが、今回はPortletでJSFを扱う必要があるので断念した次第です。 #PortalServerがJRE1.3というのが足枷になっています。。 いずれの方法にしろ、標準のdataTableで動的なColumnを生成するのは どれも無理矢理するしかないという感じですね。 現在、JSFで実装するか、他の技術で実装するか判断に迫られているのですが、 他に標準のdataTableで動的なColumnを表示する良いロジック、案があればアドバイス頂けたらと思います。 |
1