[Seasar-user:6350] Re: [Teeda]非JSFページからのアクセス時のライフサイクルにつ
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2007年 2月 26日 (月) 17:06:25 JST
お世話になります。田口です。
>問題なく動作することを確認しました。
と,送ったのですが,
問題がありました。
非JSFページからの初画面表示は問題ありませんが,
JSFページから他のJSFページへの遷移時に
initializeが動作しません。
ただし,このページから,
再度もとのページに戻ってから遷移すると
今度はinitializeは動作します。
postbackの判定は下記です。
if (!PostbackUtil.isPostback(requestMap)) {
invoke(initialize処理)
}
それとも,この処理を行うのは
初画面判定の場合だけなのでしょうか?
(その場合の判断は,
INVOKE_APPLICATIONフェーズを処理するか否か,でしょうか)
以上,よろしくお願いいたします。
>お世話になります。田口です。
>
>>> org.seasar.teeda.extension.html.impl.HtmlViewHandlerです。
>>> 1.0.4であれば、restoreViewメソッドでinitializeが呼ばれ(postbackではない場合)、
>>> renderViewでprerenderが呼ばれています。
>こちらの方式で検証し,
>問題なく動作することを確認しました。
>
>ありがとうございました。
>
>
>>大谷です。
>>
>>> > この初期表示のライフサイクルなのですが,
>>> > JSFの資料を見て,私も上記の認識でしたが,
>>> > 非JSFページAに対し,
>>> > リクエストパラメータを設定し
>>> > A.jsp?xxx=XXとかの設定を行うと,
>>> > 以降のフェーズが通ることを確認しています。
>>> > (org.seasar.teeda.core.lifecycle.impl.RestoreViewPhaseの
>>> > executePhaseの最終行の処理)
>>
>>これはTeedaのバグだったので修正しました。
>>次のバージョンには反映されます。
>>
>>宜しくお願いします。
>>
>>07/02/26 に Shinpei Ohtani<[E-MAIL ADDRESS DELETED]> さんは書きました:
>>> 大谷です。
>>>
>>> > この初期表示のライフサイクルなのですが,
>>> > JSFの資料を見て,私も上記の認識でしたが,
>>> > 非JSFページAに対し,
>>> > リクエストパラメータを設定し
>>> > A.jsp?xxx=XXとかの設定を行うと,
>>> > 以降のフェーズが通ることを確認しています。
>>> > (org.seasar.teeda.core.lifecycle.impl.RestoreViewPhaseの
>>> > executePhaseの最終行の処理)
>>>
>>> こちらの件は調査してみます。
>>>
>>> > 「TeedaExtensionを参考に」とのことですが、
>>> > 具体的にどのクラスなりメソッドが参考になりますでしょうか?
>>>
>>> org.seasar.teeda.extension.html.impl.HtmlViewHandlerです。
>>> 1.0.4であれば、restoreViewメソッドでinitializeが呼ばれ(postbackではない場合)、
>>> renderViewでprerenderが呼ばれています。
>>>
>>> 宜しくお願いします。
>>>
>>> 07/02/26 に [E-MAIL ADDRESS DELETED]<[E-MAIL ADDRESS DELETED]>
>>> さんは書きました:
>>> > お世話になります。田口です。
>>> > さっそくのご回答ありがとうございます。
>>> >
>>> > >の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 mailing list
>>> > [E-MAIL ADDRESS DELETED]
>>> > https://ml.seasar.org/mailman/listinfo/seasar-user
>>> >
>>>
>>>
>>> --
>>> =============================
>>> Shinpei Ohtani
>>> [E-MAIL ADDRESS DELETED]
>>> =============================
>>>
>>
>>
>>--
>>=============================
>>Shinpei Ohtani
>>[E-MAIL ADDRESS DELETED]
>>=============================
>>_______________________________________________
>>Seasar-user mailing list
>>[E-MAIL ADDRESS DELETED]
>>https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>_______________________________________________
>Seasar-user mailing list
>[E-MAIL ADDRESS DELETED]
>https://ml.seasar.org/mailman/listinfo/seasar-user
>
Seasar-user メーリングリストの案内