![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_09.png?5a7ff87)
【質問1】
表題のとおり、あるバッキングビーンからセッションスコープの別のバッキングビーンのプロパティをgetterで取得したいのですが、可能でしょうか?可能な場合、どのようにコードを組めばいいのでしょうか?
【質問2】
JSFを使用すればconfigの設定によりバッキングビーンがセッションに格納されますが、バッキングビーン以外のビーンクラス(バッキングビーンとしては使用しないがgetter、setterでアクセスするクラス)をHttpSessionに格納・取得することは出来ますか?
<h:commandButton action="#{myBean.doHoge}" value="GOGO" />
というのも、以上のボタンを押下すればバッキングビーン”myBean”のdoHoge()メソッドが呼び出されます。doHoge()の引数でRequestオブジェクトがもらえればそこからHttpSessionを利用することも出来るでしょうが、doHoge()メソッドは引数VOIDなので、HttpSessionをどう利用していいのかがわかりません。
よろしくお願いいたします。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_03.png?5a7ff87)
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への接続と...
-
[VBA] Classから他のClassを呼...
-
VB.netで、動的な型変換を行い...
-
他のモジュールのプロシージャ...
-
WPFでCanvas の子要素にアクセ...
-
用語の意味の違いを教えてくだ...
-
Mapに登録した値を登録した順に...
-
Excel vbaで複数のテキストボッ...
-
worksheetFunctionクラスのVloo...
-
パソコンへの「Dropbox...
-
実行時エラー 438になった時の...
-
VBA シートのボタン名を変更し...
-
ユーザーフォームを表示中にシ...
-
VBA(エクセル)で自動的にボタン...
-
【C#/Java?】try-catchでcatch...
-
Form_Load と Form_Activate の...
-
vbaのエラー対応(実行時エラー...
-
Vba テキストボックス文字を右...
-
IF文に時間(何時から何時ま...
-
「Columns("A:C")」の列文字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
共通モジュールでDBへの接続と...
-
[VBA] Classから他のClassを呼...
-
コンポーネント指向って、どの...
-
他のモジュールのプロシージャ...
-
用語の意味の違いを教えてくだ...
-
Excel vbaで複数のテキストボッ...
-
VB.netで、動的な型変換を行い...
-
VB.NETにて文字列で指定した関...
-
WPFでCanvas の子要素にアクセ...
-
VBAで、Functionを、クラスモジュール...
-
(初歩)インスタンス化の負担と...
-
Form2の変数をForm1に渡す方法...
-
バウンドプロパティとは?
-
VB ブラウザ
-
VB6で外部から静的アクセスが可...
-
Python クラスとモジュールの...
-
VBA オブジェクト追加
-
ExcelVBAでJavaのHashtableのよ...
-
'StructLayout' の仕様について
-
【JSF】バッキングビーンから別...
おすすめ情報