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

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2007年 6月 11日 (月) 14:38:45 JST


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

>現在の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 メーリングリストの案内