- - PR -
JSFタグ 条件分岐
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-02-03 11:18
JSFを使って開発を行っています。
<h:dataTable>タグを使用してテーブル情報を表示しています。 列情報には<h:selectOneMenu>の入力項目があり、 値によって入力可、入力不可に設定したいと考えています。 renderedを<h:selectOneMenu>に追加して<h:column>の中に入力可と入力不可の <h:selectOneMenu>を2つ用意したのですが、うまくいきませんでした。 Strutsの<logic:equal>タグのようなものはJSFには存在しないのでしょうか?? -------------------------------------------------------------------------- <h:dataTable id="tbl" rendered="#{testbean.rendered}" value="#{testbean.list}" var="lst" border="1" headerClass="title_field"> <h:column> <f:facet name="header"> <h:outputText value="区分"/> </f:facet> <h:selectOneMenu id="kbn" value="#{lst.kbn}" rendered="#{lst.kbnOn}" disabled="true"> <f:selectItem itemValue="0" itemLabel="OFF"/> <f:selectItem itemValue="1" itemLabel="ON"/> </h:selectOneMenu> <h:selectOneMenu id="kbn" value="#{lst.kbn}" rendered="#{lst.kbnOff}" disabled="true"> <f:selectItem itemValue="0" itemLabel="OFF"/> <f:selectItem itemValue="1" itemLabel="ON"/> </h:selectOneMenu> </h:column> </h:dataTable> -------------------------------------------------------------------------- どなたかご教授お願い致します。 | ||||||||
|
投稿日時: 2006-02-06 15:32
うまくいかないとはどういう状況でしょうか? renderedプロパティは表示する/しないの切り替えなので, 入力可/不可の切り替えはdisabledプロパティの方ではないでしょうか?? それと,これは好みの問題かもしれませんが,ビーン側にOn/Offというメソッドを設ける のは,プレゼンロジックとビジネスロジックの混在になってしまう気がします. 何か状態(status)があって,それが何かの時にOn/Offになるのではないでしょうか? つまり #{bean.status == 'some state'} や #{bean.status != 'some state'}の ような感じかと. | ||||||||
|
投稿日時: 2006-02-07 13:51
申し訳ありません。JSPの記入を間違えていました。 <h:selectOneMenu id="kbn" value="#{lst.kbn}" rendered="#{lst.kbnOn}" disabled="true"> <f:selectItem itemValue="0" itemLabel="OFF"/> <f:selectItem itemValue="1" itemLabel="ON"/> </h:selectOneMenu> <h:selectOneMenu id="kbn" value="#{lst.kbn}" rendered="#{lst.kbnOff}" > <f:selectItem itemValue="0" itemLabel="OFF"/> <f:selectItem itemValue="1" itemLabel="ON"/> </h:selectOneMenu> 上に記入しているrendered="#{lst.kbnOn}" は表示されますが、入力不可の rendered="#{lst.kbnOff}" はプルダウンリストが表示されませんでした。 バッキングビーンをデバックしてみたらkbnOnのgetterにはアクセスしましたがkbnOffのgetterにはアクセスしていませんでした。
すみません。renderedに式が記入出来ることを知らなかったので。。。 ちなみにrendered="#{lst.kbn == '0'}",rendered="#{lst.kbn == '1'}"に変更してみたましたが、結果は同じで先に記入したタグ(disabled="true")のみ表示され入力可のタグは表示出来ませんでした。 | ||||||||
|
投稿日時: 2006-02-07 16:24
ですから,renderedはそういう機能なんですが. 表示するけど入力を不可にするにはrenderedではなくてdisabledの方です. disabled="#{lst.kbn == '0'}"のように. | ||||||||
|
投稿日時: 2006-02-09 10:53
ありがとうございます。disabled="#{lst.kbn == '0'}"で解決できました。 が、再度質問させて下さい。 renderedが表示する/しないの切り替えを行うことは分かるのですが、 下記のようにlist.kbn == '0'のときは入力不可のプルダウンを表示し list.kbn == '1'のときは入力可のプルダウンを表示するという書き方は 出来ないのでしょうか? rendered="#{lst.kbn == '0'}" disabled="true" rendered="#{lst.kbn == '1'}" disabled="false" 理解不足で本当に申し訳ありませんが 宜しくお願い致します。 | ||||||||
|
投稿日時: 2006-02-09 11:27
すみませんでした.ようやく私もいなふみさんの意図が分かりました.
ONの時はOFFにできるが,OFFの時はONにできない,という仕様ですね.
もしかして,listビーンをrequestスコープにしていますか? renderedやdisabledに使うビーンはsessionスコープが原則です. | ||||||||
|
投稿日時: 2006-02-13 09:18
わらりずらい説明で申し訳ありません。 スコープはsessionにしています。 再度、確認してみたのですが、 rendered="#{lst.kbn == '0'}" disabled="true" rendered="#{lst.kbn == '1'}" disabled="false" 上記のように記入した場合にはdisabled="true"のタグのみ表示され、 rendered="#{lst.kbn == '1'}" disabled="false" rendered="#{lst.kbn == '0'}" disabled="true" の場合はdisabled="false"のタグのみ表示されます。 先に記入したタグのみ有効とされ、後に記入したタグは無視されているようです。 disabledではOKでrenderedではNGというのが謎なのですが・・・ | ||||||||
|
投稿日時: 2006-02-14 13:10
ひとまず、現在対象となっているコードに
と書いてlst.kbnの変更で表示が切り替わるかどうかを確認し、それをselectOneMenuに変えたり、disableを付けたりというのを順番に試してみるのはどうでしょう。 |