[Seasar-user:3876] Re: 独自作成Interceptorの使用方法

藤本 正人 [E-MAIL ADDRESS DELETED]
2006年 6月 16日 (金) 14:21:50 JST


Seasar2勉強中の藤本と申します。

私も同様の問題(Interceptorでセッション属性のオブジェクトが自動バインディ
ングされない)で悩み、下記のように直接S2Containerからインスタンスを取得す
ることで解決しました。

S2Container con = SingletonS2ContainerFactory.getContainer();
User user = (User) con.getComponent(User.class);

>こんにちは、関です。
>
>Seasarを勉強中ですがよろしくお願いします。
>
>【実現したいこと】
>S2JSFに簡易的な認証機能を付けたプログラムを作成したい。
>(ページの閲覧認証機能は、横断的なシステムの機能と考えてAOPで実装してみよう
>と考えました)
>
>【考えたこと】
>閲覧者は session で User コンポーネントを持ち回りサーバーに閲覧者を知らせま
>す。
>S2JSF の全ての action に 独自作成の Interceptor をAOPで埋め込んで
>独自実装 Interceptorの invoke(MethodInvocation invocation) メソッドで
>閲覧者が保持している session の User コンポーネントを取得し、
>閲覧権限が無い場合には invocation.proceed(); をスキップして action を終了さ
>せようと考えました。
>閲覧権限の有無の実現方法は getTargetClass で action クラス名を取得できるみ
>たいなので
>それと 取得した User オブジェクトを比較しようと思っています。
>
>【出来ないこと】
>しかし、独自実装Interceptorで 閲覧者が保持している
>session の User コンポーネントを取得できません。
>
>この独自作成のInterceptor で setter を実装すれば取得できるかとも思い
>やってみましたが出来ませんでした。
>
>public void setUser(User user) {
>   this.user = user;
>}
>
>【聞きたいこと】
>actionには setUser メソッドでコンポーネントは入るのですが
>Interceptorをかぶせるオブジェクトではコンポーネント(上記例でいうとUserイン
>スタンス)は
>取得できないのでしょうか?
>何か分かりやすいサンプルなどがありましたら教えて下さい。
>
>そもそも、AOPで実装仕様とする事自体が
>もしかしたら見当違いなのかもしれませんが、よろしくお願い致します。
>
>
>_______________________________________________
>Seasar-user mailing list
>[E-MAIL ADDRESS DELETED]
>https://www.seasar.org/mailman/listinfo/seasar-user

---
Masato FUJIMOTO



Seasar-user メーリングリストの案内