[Seasar-user:8220] Re: [Teeda]PostBackUtil.isPostBackの使用について

Shinpei Ohtani [E-MAIL ADDRESS DELETED]
2007年 6月 11日 (月) 12:45:42 JST


大谷です。

現在のPostbackの設定はPOSTであれば、
常にsetPostback(true)になっています。
これはTeedaExtensionで必要なためそうしています。

なので、PhaseListenerでのPostbackでは
それとは別に前のViewIdと現在のViewIdのチェックを
する方が良いと思います。
requestMapにはpreviousViewIdというキーで前のviewIdが
入っていますので、それとViewRoot.getViewId()とで
比較できるはずです。

> 他に何かチェックするポイントはありますでしょうか?
> よろしくお願いします。

07/06/11 に [E-MAIL ADDRESS DELETED]<[E-MAIL ADDRESS DELETED]>
さんは書きました:
> お世話になります。田口です。
>
> 確認してみましたが、
> RestoreViewPhaseが動き、
> PostbackUtil.setPostback()が動作しています。
> しかし、setPostbackでは"true"が設定されてしまいます。
> (引数のpostbackはtrueになっている)
> Teedaは1.0.7です。
>
> 他に何かチェックするポイントはありますでしょうか?
> よろしくお願いします。
>
> >大谷です。
> >
> >Teeda1.0.7に限って話を進めさせてください。
> >(古いバージョンであればまた別途調査してみないとわかりません)
> >
> >内部的にTeedaCoreの上にどのような拡張をしているかに
> >よってしまうのですが、
> >PostbackUtil.isPostback()は単純にrequestMapに
> >あるpostbackというキーに紐づくbooleanだけを見ています。
> >これはどこで設定されているかというと、
> >TeedaのRestoreViewPhase.setUpRestoreViewPhase()で行われています。
> >
> >つまりRestoreViewPhaseとRenderResponsePhaseが
> >同一requestで行われているならば、PostbackUtilは正しく動くはずです。
> >
> >JSF画面からJSF画面に遷移する際にRestoreViewPhaseが
> >正しく動いていて、PostbackUtil.setPostback()が正しく
> >動いているかをデバッガなどで見てみてください。
> >
> >07/06/11 に [E-MAIL ADDRESS DELETED]<[E-MAIL ADDRESS DELETED]>
> >さんは書きました:
> >> お世話になります。田口です。
> >>
> >> Teedaでの初期処理を、JSPを使用する関係上、
> >> Teeda Extensionを使用せず、
> >> PhaseListenerを使って、処理しようとしております。
> >>
> >> その際に、initialize,prerennderの判定において
> >> PostbackUtil.isPostBackメソッドを使用を検討していますが、
> >> 画面遷移時にinitializeメソッドが実行されません。
> >>
> >> 具体的には、PhaseListenerで、
> >> JSFライフサイクルのRENDER_RESPONSE時の
> >> beforePhase処理において、
> >> 下記のような判定ロジックを記載していますが、
> >> PostbackUtil.isPostback(requestMap)がfalseにならないため、
> >> initializeメソッドが動いていない状態です。
> >>
> >> ExternalContext externalContext = context.getExternalContext();
> >> Map<String, String> requestMap = externalContext.getRequestMap();
> >>
> >> // フェーズIDがRENDER_RESPONSEの場合
> >> if (phaseId == PhaseId.RENDER_RESPONSE) {
> >>
> >>     // 同一画面表示の場合は、INITIALIZE_METHODはinvokeしない
> >>     if (!(PostbackUtil.isPostback(requestMap))) {
> >>         // initializeを実行
> >>         invoke(context,viewId,INITIALIZE_METHOD);
> >>     }
> >>
> >> 非JSF画面からの画面遷移時には、うまく動作していますが、
> >> JSF画面からJSF画面の遷移時には、initializeが動いていない状態です。
> >>
> >> そもそもの使用方法が間違っているのでしょうか?
> >> 処理方法について、ご教示ください。
> >> よろしくお願いいたします。
> >> _______________________________________________
> >> 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]
=============================



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