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

Shinpei Ohtani [E-MAIL ADDRESS DELETED]
2007年 6月 11日 (月) 15:33:11 JST


大谷です。

> >現在のPostbackの設定はPOSTであれば、
> >常にsetPostback(true)になっています。
>
> まず、Teeda Extensionを使用しない場合は
> PostbackUtilは使用しないという認識でよろしいですか?

使っても良いですが、現状のTeedaの仕様だと
PostbackUtilではPOSTかどうかしか見ていません。
POSTで最初にリクエストが飛んできた場合、その画面は
それ以降自画面postback=trueになります。

> 非JSFページAからJSFページBへの遷移時はうまくいきます。
> JSFページBからJSFページCへの遷移時もうまくいきますが、
> JSFページCからJSFページBに戻る際に、
> ViewIdにもJSFページB、previousViewIdにもJSFページBと
> なっており、うまく判定ができません。

戻る、とはどのように戻っているのでしょうか?
ブラウザのバックボタンで戻っている場合、
previousViewIdは更新されません。
宜しくお願いします。

07/06/11 に [E-MAIL ADDRESS DELETED]<[E-MAIL ADDRESS DELETED]>
さんは書きました:
> お世話になります。田口です。
>
> >現在のPostbackの設定はPOSTであれば、
> >常にsetPostback(true)になっています。
>
> まず、Teeda Extensionを使用しない場合は
> PostbackUtilは使用しないという認識でよろしいですか?
>
> >requestMapにはpreviousViewIdというキーで前のviewIdが
> >入っていますので、それとViewRoot.getViewId()とで
> >比較できるはずです。
> PostbackUtilの代わりに、
> 上記の比較で行ってみましたが、
> 非JSFページAからJSFページBへの遷移時はうまくいきます。
> JSFページBからJSFページCへの遷移時もうまくいきますが、
> JSFページCからJSFページBに戻る際に、
> ViewIdにもJSFページB、previousViewIdにもJSFページBと
> なっており、うまく判定ができません。
>
> 判定は前回同様、JSFライフサイクルのRENDER_RESPONSE時の
> beforePhase処理にて行っております。
>
> 他、チェックポイントなどあれば
> ご教示願います。
>
>
> >大谷です。
> >
> >現在の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 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 メーリングリストの案内