[Seasar-user:6345] Re: [Teeda]非JSFページからのアクセス時のライフサイクルにつ

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2007年 2月 26日 (月) 14:12:45 JST


お世話になります。田口です。
さっそくのご回答ありがとうございます。

>の2つしかとおらないので、InvokeApplicationフェーズはとおりません。
この初期表示のライフサイクルなのですが,
JSFの資料を見て,私も上記の認識でしたが,
非JSFページAに対し,
リクエストパラメータを設定し
A.jsp?xxx=XXとかの設定を行うと,
以降のフェーズが通ることを確認しています。
(org.seasar.teeda.core.lifecycle.impl.RestoreViewPhaseの
executePhaseの最終行の処理)

「TeedaExtensionを参考に」とのことですが、
具体的にどのクラスなりメソッドが参考になりますでしょうか?

以上,よろしくお願いいたします。


>大谷です。
>
>初期表示時にJSFのライフサイクルは
>・RestoreViewPhase
>・RenderResponsePhase
>の2つしかとおらないので、InvokeApplicationフェーズはとおりません。
>
>なので、InvokeApplicationフェーズでPhaseListenerを仕掛けるのは
>適切ではないと思います。
>
>TeedaExtensionを参考に、初期表示時にでも通る
>・RestoreViewPhase
>・RenderResponsePhase
>にPhaseListenerを仕掛けるのがよいのではないでしょうか。
>
>以上宜しくお願いします。
>
>07/02/26 に [E-MAIL ADDRESS DELETED]<[E-MAIL ADDRESS DELETED]>
>さんは書きました:
>> 田口です。
>> お世話になります。
>>
>> S2 2.4.6,Teeda1.0.4で開発を行っています。
>> JSP表示前に初期化処理を行うため,
>> PhaseListenerを作成し,initialize処理を行っていますが,
>> 非JSFページからのアクセス時(初回表示),
>> initialize処理が動かない事象が発生しています。
>>
>> initializeとprerenderの判定は,
>> INVOKE_APPLICATIONフェーズにおいて,
>> viewroot.getViewId()により取得したViewIdを,
>> externalcontext.getRequestMap()により取得したRequestMapに保持し
>> これをRENDER_RESPONSEフェーズの際に取得したViewIdと比較し,
>> 違えばinitializeを行い,
>> 同じであれば,同一画面表示とみなし,initializeを行わないように
>> しています。
>>
>> そこで,JSFページAからJSFページBに遷移する場合は,
>> INVOKE_APPLICATIONフェーズにおいて取得したViewIdはAなのですが,
>> 非JSFページAからJSFページBに遷移する場合は,
>> 取得したViewIdがAではなくBとなっており,
>> initializeが行われない状態です。
>>
>> 非JSFページからのアクセス時でも
>> 上記の処理がきちんと動作するようにするには
>> どのような判定を行うようにすればいいでしょうか?
>>
>> 以上,ご教示ください。
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>
>
>-- 
>=============================
>Shinpei Ohtani
>[E-MAIL ADDRESS DELETED]
>=============================
>_______________________________________________
>Seasar-user mailing list
>[E-MAIL ADDRESS DELETED]
>https://ml.seasar.org/mailman/listinfo/seasar-user
>



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