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

Shinpei Ohtani [E-MAIL ADDRESS DELETED]
2007年 2月 26日 (月) 13:53:27 JST


大谷です。

初期表示時に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 メーリングリストの案内