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

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2007年 6月 11日 (月) 18:00:40 JST


お世話になります。田口です。

>戻る、とはどのように戻っているのでしょうか?
すいません、表現がまずかったですね。
>> JSFページCからJSFページBに戻る際に、
ではなく、
JSFページCからJSFページBに遷移する際に、
です。
ボタンを押下して、
JSFページCのページクラスが動作して
PhaseListenerで確認した時に、
>> ViewIdにもJSFページB、previousViewIdにもJSFページBと
>> なっており、うまく判定ができません。
ということです。


>大谷です。
>
>> >現在の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 mailing list
>[E-MAIL ADDRESS DELETED]
>https://ml.seasar.org/mailman/listinfo/seasar-user
>



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