[Wicket-ja-user 643] Re: ページのバージョン管理について

Back to archive index

Masaya seko masay****@nifty*****
2012年 3月 15日 (木) 07:35:05 JST


世古です。

>>矢野です。
>私の経験上は、Chrome/Safari/IEではちゃんとバックボタン時にサーバにリクエスト
が飛びます。デバッガでブレークポイントを設定して、バックボタンを押したら、狙っ
た場所で止まりますし(少なくとも私がいま使ってる環境では、ちゃんと動作してます
)。
「あれ?」と思って手元にあったSafari 5.1.2で実験してみました。

・プロキシ無し。
 WicketFilter#doFilter(ServletRequest,ServletResponse,FilterChain)にブレーク
ポイント設定
 …戻るを押したときに止る

・プロキシ有り(横取り丸という開発時にログをとるプロキシを使用)。
 WicketFilter#doFilter(ServletRequest,ServletResponse,FilterChain)にブレーク
ポイント設定
 …戻るを押したときに止らない

と言う結果になりました。
どうやら、「Wicketとはあまり関係無く、プロキシが入っている場合、戻るボタン使用
時はサーバに問い合わせにこない『かも』」というのが真相に近いようです。

というわけでして、藤原さん、矢野さん、不安がらせて申し訳なかったです。


>>藤原さん
>更新系のページの場合には履歴の情報をそのまま表示されると困ってしまう場合が多
いかと思います。
Updateするページの場合、戻るボタンを使用する/しないに関わらず他人がデータを編
集することがあることが大半かと思います。
なので、戻るボタンの使用有無に関係無く、楽観ロックを使うのが良いかなぁと言う気
もします。

楽観ロックは導入した上で、追加の対応を求められている、という状態でしたらすみま
せん。

以上
----- Original Message -----
>From: Tsutomu Yano <t_yano****@me*****>
>Date: Thu, 15 Mar 2012 00:13:06 +0900
>To: wicke****@lists*****
>Subject: [Wicket-ja-user 642] Re:
> ページのバージョン管理について
>
>
>矢野です。
>
>私の経験上は、Chrome/Safari/IEではちゃんとバックボタン時にサーバにリクエスト
が飛びます。デバッガでブレークポイントを設定して、バックボタンを押したら、狙っ
た場所で止まりますし(少なくとも私がいま使ってる環境では、ちゃんと動作してます
)。Firefoxは1.4のころ一時問題があって対応が必要でしたが、1.5では直ってるかも
しれません(未確認)。
>
>Wicket 1.4ではPageMapという概念があって、PageMapに直接アクセス可能でしたが、1
.5でPageMapがなくなり、PageStoreになったのですが、PageStoreは外部からはアクセ
ス不能で、直接ページを削除することが出来ません。MLの発言とか追っていると、意図
的にそうしているっぽいです。
>
>実は、Wicket 1.5でのバックボタン時のページ無効化について、ここ数日必要があっ
て調べていたので、一応対策はあろうかと思います。ちょっと今時間がないので別の日
に書きますが、PageStoreからページインスタンスを消すという方向ではなく、セッシ
ョンに「どのpageIdはexpireしたか」という情報を持たせて、ページ自らがonConfigur
e()で「自分がexpireしてるかどうか」を判断する方が、実装が簡単です。「自分のpag
eIdがもうexpireしてたらPageExpiredExceptionを投げる」という形にすることで、バ
ックボタンを押したらPageExpire状態にすることができます。Wicketでは、バックボタ
ンを押すと、前のインスタンスが復元されるので、じゃあページ自身に自分のステート
を確認させろ、というアプローチです。
>
>むしろ、ページオブジェクトが自ら「自分がexpireしたかどうか」を判断する、とい
うこの流れの方が、ある意味Wicketらしいかもしれません。
>
>---------------------------------------------------
>矢野 勉(やの つとむ)
>電子メール: t_yano****@me*****
>---------------------------------------------------
>
>On 2012/03/14, at 21:51, Masaya seko wrote:
>
>> 藤原さん
>> 
>> お疲れ様です。世古です。
>> 私もあまり分かってないのですが、Wicket1.5の利用者は少なそうですので、私が知
っ
>> ている範囲のことをお伝えします。
>> 
>> 
>>> 最新の情報とブラウザの「戻る」を使用して表示される情報に齟齬が生じてしまい
ま
>> す。
>> これの対策は謎に満ちあふれています。
>> と言いますのも、私が実験した限りでは、Wicketで作成したサイトの場合、経験上
、Ch
>> rome/Safari/Firefoxはブラウザの「戻る」を押したときに、ほぼサーバに接続して
く
>> れないのです。
>> すなわち、ローカルに存在するキャッシュを優先的に使用します。
>> IEの場合は、サーバに接続したりしなかったりします(条件はよく分かっていません
)。
>> 
>> 原因が分かっていないので、「経験上」としか申し上げることができないのですが
。
>> もっともWicketは関係無く、別の要因の可能性もありえますので、藤原さんの環境
では
>> 問題ないかもしれません。
>> しかし、戻るボタンを押した際に、ブラウザがサーバに問い合わせに来ているかは
、確
>> 認された方が良いかと思います。
>> 
>> 
>> 次に履歴の削除について。
>> ページの履歴の破棄自体は一応できますが、ベストな方法は分からなかったです。
>> 
>> 例えば、以下のように記述しますと、リクエストのたびに履歴が消えます。
>> このタイミングで、ばっさり消して、副作用がないのかは分からないのですけれど
も。
>> public class ExampleApplication extends WebApplication {
>>    public void init() {
>>        setRequestCycleProvider(new IRequestCycleProvider(){
>>            public RequestCycle get(final RequestCycleContext context)
>>            {
>>                return new RequestCycle(context){
>>                    @Override
>>                    protected void onEndRequest() {
>>                        Session session = Session.get();
>>                        session.getPageManager().sessionExpired(session.getI
d(
>> ));
>>                    }
>>                };
>>            }
>>        });
>>    }
>> }
>> 
>> 履歴を消した後、ブラウザの戻るを使用した場合の挙動について。
>> 履歴が削除されたページを表示しようとした場合は、ブラウザにセッションタイム
アウ
>> トの時のエラーが表示されます。
>> また履歴を消しても、戻り先がホームページ(あと、おそらくブックマーク可能なペ
ー
>> ジも)の場合、ページのインスタンスが新規作成されるため、表面上元のページに戻
れ
>> ます。
>> 
>> 
>> 最後に他の解決策の可能性について。
>> LoadableDetachableModelを使用すれば、ページのレンダリング時に、データを取り
直
>> せるかも。
>> (実験してないです。すみません)
>> 
>> 
>> 以上、なにかの参考になれば。
>> 
>> ----- Original Message -----
>>> Date: Tue, 13 Mar 2012 15:29:45 +0900
>>> From: 藤原高明 <t.bas****@gmail*****>
>>> To: wicke****@lists*****
>>> Subject: [Wicket-ja-user 638]
>>> 	ページのバージョン管理について
>>> 
>>> 
>>> 藤原です。
>>> いつもお世話になっております。
>>> 
>>> ページのバージョン管理についてお聞きしたい事があります。
>>> Wicketが管理しているページの履歴を破棄することは可能でしょうか。
>>> 
>>> 例としては複数ユーザがDBの同一データにアクセスできる場合を想定しています。
>>> 入力フォームで情報を登録し別ページに移動したとします。
>>> その間に別ユーザが情報を変更した場合、
>>> 最新の情報とブラウザの「戻る」を使用して表示される情報に齟齬が生じてしまい
ま
>> す。
>>> 
>>> このような状況を回避する方法はあるのでしょうか。
>>> 
>>> ----- inline -----
>>> _______________________________________________
>>> Wicket-ja-user mailing list
>>> Wicke****@lists*****
>>> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user
>> 
>> _______________________________________________
>> Wicket-ja-user mailing list
>> Wicke****@lists*****
>> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user
>
>_______________________________________________
>Wicket-ja-user mailing list
>Wicke****@lists*****
>http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user




Wicket-ja-user メーリングリストの案内
Back to archive index