[Wicket-ja-user 158] Re: Redirect時のSessionについて

Back to archive index

Tsutomu Yano benbr****@mac*****
2008年 7月 24日 (木) 03:31:55 JST


> しかし、これだと固定URLの後ろに
>
>  http://localhost:8080/MyNiceURL;jsessionid=ほげほげ
>
> のようにセッションIDが表示されURLが汚されてしまったので、
> session.bind();のすぐ下で
>
>         /* URLが汚いって言う??? */
>         session.dirty();
>
> という一文を追加してみたところ、綺麗なURLのまま遷移先のページまでセッションが維持できました。
> session.dirty()については 「感」 でやってみただけなのでそもそも使い方や使う場所自体間違えているかもしれません。
> もう少し調査を続けたいと思います。



矢野です。

前記だとURLにセッションIDがついて、後記だとつかない(jsessionid cookieをちゃんと使ってると思われます)理由までは
わかりませんが、session.dirty()の使い方としては正しいと思いますよ。

独自のSessionサブクラスを使う場合(使うことが奨励されています)、Sessson#setProperty()を介さずにセッションの
内容が変更されるため、WicketはバックエンドのHttpSessionとの同期タイミングを知ることが出来ません。

ですから「session.getBreadURLMap().put(key, value)」でセッションの内容を変更したあとにdirty()メソッドを呼ぶことは
正しい操作です。これによりWicketはレスポンス返却タイミングでHttpSessionとWicket Sessionを同期します。


ただ、これが生成されるURLになぜ影響を与えるかまでは追いかけられてません。


---------------------------------------------------
矢野 勉(やの つとむ)
電子メール:benbrand_at_mac.com
---------------------------------------------------




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