- PR -

JSFでアクションマッピング

投稿者投稿内容
Dog
常連さん
会議室デビュー日: 2003/10/16
投稿数: 24
投稿日時: 2006-11-30 11:23
よしだひろゆきさんご返信ありがとうございます。

引用:

よしだひろゆきさんの書き込み (2006-11-29 13:42) より:

ログインしたユーザを表現するmanaged beanを作ってあるでしょうから、そのプロパティとしてそのユーザのstatusを得られるようにしておいて、
<h:outputText ..... rendered="#{user.status == ABCD}"/>



やはりそういった方法が定石なのですよね。
悩んでいたのが、Application Developerが提供するgetStatusメソッドがList型などの場合
どうしたら良いかということです。Page Authorはパラメータを渡して、List内にそのパラメータが
存在するか否かのboolean値を得る(renderedとして用いる)。
・・という設計を考えていました。statusという情報にしてもいろいろあり、「statusが〜であれば・・」というケースも
あるでしょうし、「〜というstatusを保持していれば・・」というケースもあるかなと。

やはりJSFを使うという前提がある以上そのフレームワークに合った設計が必要だと言う事でしょうか。
<h:outputText ..... rendered="#{user.status == ABCD}"/> の形でいけるように設計をし直す方向で
考えようと思います。

丁寧なご回答ありがとうございました。
よしだひろゆき
大ベテラン
会議室デビュー日: 2004/11/22
投稿数: 141
投稿日時: 2006-11-30 13:13
引用:

<h:outputText ..... rendered="#{user.status == ABCD}"/>


すみません、'ABCD'と引用符が必要でしたね。

引用:

悩んでいたのが、Application Developerが提供するgetStatusメソッドがList型などの場合
どうしたら良いかということです。Page Authorはパラメータを渡して、List内にそのパラメータが
存在するか否かのboolean値を得る(renderedとして用いる)。
・・という設計を考えていました。statusという情報にしてもいろいろあり、「statusが〜であれば・・」というケースも
あるでしょうし、「〜というstatusを保持していれば・・」というケースもあるかなと。


なるほど、そういうケースですか。リストの何番目にあるかが分かっているのであれば
#{user.status[3] == 'ABCD'}
のように書けるのですが、そうではないのですね。
そうすると、managed-beanの方にisABCD()のようなメソッドをステータスの種類だけ作ったりしないといけないかな。
Dog
常連さん
会議室デビュー日: 2003/10/16
投稿数: 24
投稿日時: 2006-11-30 14:51
引用:

そうすると、managed-beanの方にisABCD()のようなメソッドをステータスの種類だけ作ったりしないといけないかな。



そうなんです。
しかもバッキングビーンの実装が
public boolean isABCD(){
return objList.contains("ABCD");
}
という感じになり、ステータスのデータ変更等から影響を受けやすいものになります。
どうにか回避できないものかと試行錯誤していたのですが・・。
Dog
常連さん
会議室デビュー日: 2003/10/16
投稿数: 24
投稿日時: 2006-12-01 10:19
上記問題が解決しました。

バッキングビーンがMap型でステータスを戻すメソッドを提供することにしました。

[jsp]
<h:outputText ..... rendered="#{not empty user.statusMap['ABCD']}" />

[managed-bean]
public Map getStatusMap(){
Map statusMap;
//statusMap初期化処理
//keyには'ABCD'等の判別文字列
//valueにはステータスを表すオブジェクト(とりあえずnull以外)
return statusMap;
}

これでステータス系のデータ内容が変更されてもバッキングビーンを変更することなく、表示処理等を変更することが出来ると思います。

お付き合い頂きありがとうございました。

[ メッセージ編集済み 編集者: Dog 編集日時 2006-12-01 10:19 ]

[ メッセージ編集済み 編集者: Dog 編集日時 2006-12-01 10:30 ]

スキルアップ/キャリアアップ(JOB@IT)