- PR -

JSF 初画面表示時にBeanに値をセットする(Actionを呼び出す)には?

投稿者投稿内容
cutback
会議室デビュー日: 2003/05/16
投稿数: 12
投稿日時: 2005-05-15 17:51
亀レスすみません。
前に一度返答したつもりが、なぜか消えてしまいました。
#そもそも返答できていなかったのかもしれないです

引用:

よしだひろゆきさんの書き込み (2005-05-10 12:09) より:
いずれにしても,「PhaseListener内でValueBinding式を生成する」と言った,ある意味不自然な実装を避けることができ,分かり易いアプリケーションができると思います.


JavaコードにEL式やBean名(<managed-bean-name>に書いた名前)を書くべきでない。
ということですよね。
しかし、マネージドビーンとしてラッパークラスのみを定義して、各ページでラッパー
クラス越しに各Beanにアクセスするのは、それはそれで不自然な気もします。

よしださんが提示された方法(ラッパークラス)も以前サンプルを作った際に試しました。
で、今回はValueBinding式でBeanにアクセスする方法を取ったのですが、現在もどちらのやり方がいいのか答えが出てないです。

どっちが一般的なんでしょうか?
よしだひろゆき
大ベテラン
会議室デビュー日: 2004/11/22
投稿数: 141
投稿日時: 2005-05-16 11:15
引用:
JavaコードにEL式やBean名(<managed-bean-name>に書いた名前)を書くべきでない。
ということですよね。


その通りです.

引用:
しかし、マネージドビーンとしてラッパークラスのみを定義して、各ページでラッパー
クラス越しに各Beanにアクセスするのは、それはそれで不自然な気もします。


私は「自然」だと思っているのですが ^_^;)
私の方法は,そこいらにいくらでもあるJSFの入門記事を読んだだけで理解できるものです.一方,代替案の方は,JSFのしくみをちゃんと理解しないと駄目ですよね.
#しくみを理解したい方はこちらがお勧め↓
http://www.src-j.com/book_no/209.htm

引用:

よしださんが提示された方法(ラッパークラス)も以前サンプルを作った際に試しました。


どんな問題がありましたか?

引用:
どっちが一般的なんでしょうか?


JSFは世界的にまだいろいろ試されている段階だと思います.
ちなみにWebsphare Studioだとマネージドビーン(例えばuser)を定義すると,それを取ってくるメソッド(getUser())を自動生成するらしいです(未確認).

なお,JSFについては以下でも活発に議論しているので眺めに来てみてください.
http://groups.yahoo.co.jp/group/jsf-jp/
cutback
会議室デビュー日: 2003/05/16
投稿数: 12
投稿日時: 2005-05-16 15:39
引用:
引用:
しかし、マネージドビーンとしてラッパークラスのみを定義して、各ページでラッパー
クラス越しに各Beanにアクセスするのは、それはそれで不自然な気もします。


私は「自然」だと思っているのですが ^_^
私の方法は,そこいらにいくらでもあるJSFの入門記事を読んだだけで理解できるものです.一方,代替案の方は,JSFのしくみをちゃんと理解しないと駄目ですよね.

んーそうですね。
JSF(SUN)がどちらの方法が使われることを想定してるのか気になるところです。

引用:
http://www.src-j.com/book_no/209.htm

これってよしださんが書かれた本ですか?

引用:
引用:
よしださんが提示された方法(ラッパークラス)も以前サンプルを作った際に試しました。

どんな問題がありましたか?

問題というわけではありませんが、faces-config.xmlにはラッパクラスのみ定義することになるので、View担当者がラッパクラスのプロパティ名(Beanの)を意識する必要がありました。やはり各Beanはそれぞれ別にfaces-config.xmlに定義するほうが自然と思います。

引用:
ちなみにWebsphare Studioだとマネージドビーン(例えばuser)を定義すると,それを取ってくるメソッド(getUser())を自動生成するらしいです(未確認).

getUser()はスタティックメソッドとして生成されるのですよね?
でその中では、ValueVindingやSessionMapなどからBeanを取得してるのではないでしょうか?自動生成なので開発者がそれを意識する必要は無いですけど…

引用:
なお,JSFについては以下でも活発に議論しているので眺めに来てみてください.
http://groups.yahoo.co.jp/group/jsf-jp/

何度か参考にしました。機会があればそちらでも発言しようと思います。
よしだひろゆき
大ベテラン
会議室デビュー日: 2004/11/22
投稿数: 141
投稿日時: 2005-05-17 11:31
引用:

JSF(SUN)がどちらの方法が使われることを想定してるのか気になるところです。


私には,
FacesContext ctx = FacesContext.getCurrentInstance();
BeanType bean = (BeanType)ctx.getApplication().getVariableResolver().resolveVariable(ctx, "beanName");
とか
FacesContext.getCurrentInstance().getApplication().createValueBinding("#{beanName}").getValue()
とかが「想定された使い方」だとはとても思えないんですけどね  
せめて
FacesContext.getCurrentInstance().getManagedBean("beanName")
くらいのAPIが用意されているのでしたら,そう使わせたいんだろうと思いますが.

引用:
問題というわけではありませんが、faces-config.xmlにはラッパクラスのみ定義することになるので、View担当者がラッパクラスのプロパティ名(Beanの)を意識する必要がありました。やはり各Beanはそれぞれ別にfaces-config.xmlに定義するほうが自然と思います。


アプリケーション側にビーン名をハードコーディングしたら,View担当者がその名前以外は使えないから,同じことでは? まぁ,View担当者のことを考えたら,ラッパクラスがプロパティのgetter/setterも全部提供してあげた方がいいでしょうね.

引用:
これってよしださんが書かれた本ですか?


ははは,ペンネームは同じですね,ということで...

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