【質問1】
表題のとおり、あるバッキングビーンからセッションスコープの別のバッキングビーンのプロパティをgetterで取得したいのですが、可能でしょうか?可能な場合、どのようにコードを組めばいいのでしょうか?
【質問2】
JSFを使用すればconfigの設定によりバッキングビーンがセッションに格納されますが、バッキングビーン以外のビーンクラス(バッキングビーンとしては使用しないがgetter、setterでアクセスするクラス)をHttpSessionに格納・取得することは出来ますか?
<h:commandButton action="#{myBean.doHoge}" value="GOGO" />
というのも、以上のボタンを押下すればバッキングビーン”myBean”のdoHoge()メソッドが呼び出されます。doHoge()の引数でRequestオブジェクトがもらえればそこからHttpSessionを利用することも出来るでしょうが、doHoge()メソッドは引数VOIDなので、HttpSessionをどう利用していいのかがわかりません。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
要するに、あるメソッドから他のBeanにアクセスできればいいわけですね。
まず、Beanクラスを定義し、これをfaces-config.xmlなどに<managed-bean>タグで登録しておきます。このへんは普通のBacking Beanと同じですからそれの登録を参照してください。これで、Backing Bean以外にもいくらでもBeanは登録できます。
で、外部からBeanを利用する方法ですが、例えば"bean1"という名前のMyBeanクラスのBeanインスタンスを得るならこんな具合になります。
FacesContext fc = FacesContext.getCurrentInstance();
Application app = fc.getApplication();
ValiableResolver vr = app.getVariableResolver();
MyBean bean = (MyBean)cr.resolveVariable(fc,"bean1");
FacesContextからApplicationを取得し、そこから更にValiableResolverを取得します。これが各種の情報を取得するためのクラスで、resolveVariableを使えば指定した名前の変数を取り出せます。
なお、これらのクラスの詳細はJavaDocを参照してください。
参考URL:http://java.sun.com/j2ee/javaserverfaces/1.1_01/ …
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext exContext = context.getExternalContext();
HttpServletRequest req = (HttpServletRequest) exContext.getRequest();
HttpSession session = req.getSession();
MyBean myBean = (MyBean) session.getAttribute("myBean");
というExternalContextを使った方法でもいけることが判ったのでHttpSessionを自由に利用できることもわかったのですが、faces-config.xmlに登録しているmanaged-beanであれば、ご回答いただいたValiableResolverを使用する方法も有効ですね。
勉強になりましたm(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java 複数TBLのオブジェクトを1つの変数(オブジェクト)でまとめて管理したい 1 2022/12/17 00:12
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Visual Basic(VBA) <excel vba>selenium basicのWebDriverの自動更新のエラーについて 1 2022/10/01 17:07
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
Excel vbaで複数のテキストボッ...
-
他のモジュールのプロシージャ...
-
VBA モジュールレベル・パブリ...
-
[VBA] Classから他のClassを呼...
-
WPFでCanvas の子要素にアクセ...
-
用語の意味の違いを教えてくだ...
-
VBA オブジェクト追加
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
実行時エラー 438になった時の...
-
VBA(エクセル)で自動的にボタン...
-
エクセルエラー13型が一致しま...
-
「Columns("A:C")」の列文字を...
-
ウォッチ式の文字数制限について
-
エクセルのVBAの標準モジュール...
-
ユーザーフォームに別シートか...
-
eclipseのデバッグ中に変数の値...
-
Form_Load と Form_Activate の...
-
ユーザーフォームで動的(Me.Con...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
[VBA] Classから他のClassを呼...
-
他のモジュールのプロシージャ...
-
用語の意味の違いを教えてくだ...
-
Excel vbaで複数のテキストボッ...
-
VB.netで、動的な型変換を行い...
-
コンポーネント指向って、どの...
-
WPFでCanvas の子要素にアクセ...
-
C#でのWebRequestでのPOSTについて
-
バウンドプロパティとは?
-
シーケンス図について。
-
VB.NETにて文字列で指定した関...
-
Python クラスとモジュールの...
-
【JSF】バッキングビーンから別...
-
ユーザーコントロールのメソッ...
-
'StructLayout' の仕様について
-
hibernate criteria
-
C# Process.Start で標準入力
-
VB6で外部から静的アクセスが可...
-
VBAで、Functionを、クラスモジュール...
おすすめ情報