- - PR -
【JSF】faces-config.xml のManagedBean初期値を使ってnewしたい
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-07-29 01:57
どなたかご教授ください。
faces-config.xml 内の ManagedBean定義 <managed-bean-name>tempBean</managed-bean-name> <managed-bean-class>jp.co.atmarkit.TempBean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> <managed-property> <property-name>bindProperty</property-name> <value>1</value> </managed-property> のとおり、 別の画面制御用ManagedBean内にて、newしたいのですが、 どのようにすればよろしいでしょうか? 教えてください。 | ||||||||||||
|
投稿日時: 2007-07-30 11:30
JSFのバージョンが書いていないので1.1と仮定しています。 VariableResolver#resolveVariable()で参照した時に 指定された名前のオブジェクトが存在しない場合に <managed-bean>の定義に従って構築されます。
このどちらかで(必要に応じてnewされたものを)取得できます。 参照時に必ずnewさせる方法はありませんが、 これらの方法で参照する前に該当オブジェクトを削除しておけば 必ず新たに構築されるので、毎回newするのと同じ意味に出来ます。 この場合の削除はValueBindingでsetValue(fc, null)が便利でしょう。 | ||||||||||||
|
投稿日時: 2007-07-31 17:30
プログラムでnewする方法はあしゅさんの解説の通りです。
ご参考までに、faces-config.xmlだけを使う方法をご紹介しておきます。 「別の画面制御用ManagedBean」というのを仮にcontrolBeanとします。 controlBeanからtempBeanにtempという名前のリンクを作っておくことがポイントです。 以下の記述をしておくと、controlBeanとtempBeanが同時に生成されて、リンクが張られます。
| ||||||||||||
|
投稿日時: 2007-08-02 12:51
あしゅさん、よしだひろゆきさん
ご教授いただいた内容を参考に検討させていただきます。 ありがとうございました。 |
1