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

アーカイブの一覧に戻る

古川 烈 r_f_315****@hotma*****
2008年 7月 23日 (水) 15:43:17 JST


古川です。

すいません、説明が少し足りていませんでした。

NiceURLは完全固定にしたいと思っております。

もっと簡単に言うと、
トップページからリンク視点でみるとツリー上に配置されている固定URLのページに対して
パンくずリストをヘッダー辺りに表示したいということです。
セッションが存在する場合は以前までに経由してきたページへのリンク用パンくずを表示し、
ユーザーによって途中のページがブックマークされ、そこに突然飛んでこられた場合は、
セッション情報無しとして何も表示しない
といった切り分けを予定しております。

現在調査したところによると
WebPage継承のページクラスのコンストラクタで
public コンストラクタ {

        MySession session = (MySession)this.getSession();

        /* データを詰める */
        session.getBreadURLMap().put( "トップ", "http://localhost:8080/SessionTest01/" );

        /* セッションをバインドする */
        session.bind();
}

と記述すれば、固定URLへのリダイレクト時もセッションが自動で維持されることを確認しました。
しかし、これだと固定URLの後ろに

 http://localhost:8080/MyNiceURL;jsessionid=ほげほげ

のようにセッションIDが表示されURLが汚されてしまったので、
session.bind();のすぐ下で

        /* URLが汚いって言う??? */

        session.dirty();

という一文を追加してみたところ、綺麗なURLのまま遷移先のページまでセッションが維持できました。
session.dirty()については 「感」 でやってみただけなのでそもそも使い方や使う場所自体間違えているかもしれません。
もう少し調査を続けたいと思います。

しかし、なるほど、こういうやり方もあるのですね。
ありがとうございました、勉強になりました。

> From: sari.****@nttco*****
> To: wicke****@lists*****
> Date: Wed, 23 Jul 2008 13:40:21 +0900
> Subject: [Wicket-ja-user 153] Re:	Redirect時のSessionについて
> 
> 中村(yuripop)と申します。
> 
> > ユーザー操作でページが A -> B -> C と遷移するときに、
> > A、B、C共にNiceURLで、ユーザーが B のページをブックマークした場合に、
> > Aからのセッション情報が無いので処理を切り替える 
> > というようなことを実現したいのですが
> 
> NiceURLに任意のパラメータ(PageParameters.getString()で取り出せるもの)
> を付けることが可能なら、以下のやり方ができるかもしれません。
>  # 「NiceURL」が完全な固定値という意味なら、
>  # 当てはまらないです、すみません^^;
> 
> ---例----
> A -> B -> C と一連の画面遷移があるとき、
> すべてのページでセッションID(AppSession.getId()の値)等を意識する。
> 
> ページBのURLは
> mount(new MixedParamUrlCodingStrategy("/waiting", WaitPage.class, new 
> String[] {"sessionid"}));
> などとマウントしておいて、
> Aからの遷移先URLとしては session.getId() したものを
> / の先にくっつけるイメージです。
> 
> 次に、ページBではコンストラクタなどで、
>  ・URLから"sessionid"パラメータを取り出す
>  ・そのときの AppSession から getId() する
> この両者を比較して、結果で処理を分岐する。
> ----------
> 
> これなら、A -> B ときたセッションをセッション1とし、
> まったく別に機会にたまたまBのURLを呼び出した際の
> セッションをセッション2とすると、
> セッション1とセッション2を区別して処理を分けられます。
> 
> Wicket1.3.1で、これでうまくいった覚えがあります。
> 
> ご質問内容とはズレる部分がありますが、以下のエントリで
> もう少し詳しく実装内容を書いていました。
> (参考)http://d.hatena.ne.jp/yuripop/20080316/p1
> 
> なお、説明がかなり下手くそなうえ、もしかすると趣旨を理解
> してないかもしれません、その場合はご容赦くださいませ。
> 
> 
> 
> 古川です。
> 
> リンクとセッションについて悩み、どなたかご教示いただけないかと思い投稿です。
> 
> WebSessionクラスを継承した独自クラスを作成し、
> aタグでページ遷移しながらセッション情報を取得したまでは良かったのですが、
> セッション情報が取得できたのはPageLink()を使用したときのみで、
> BookmarkablePageLink()を使用したときはセッション情報が落ちてしまっていました。 
> 
> 
> やりたいことはURLを汚さずに(NiceURLで)遷移を行いながらセッション情報を維持することです。
> 
> ユーザー操作でページが A -> B -> C と遷移するときに、
> A、B、C共にNiceURLで、ユーザーが B のページをブックマークした場合に、
> Aからのセッション情報が無いので処理を切り替える 
> 
> というようなことを実現したいのですが、
> Wicketがリダイレクト時にセッションを自動的に維持してくれたりはしないのでしょうか???
> また自動でなくても上記の動きを実現するような方法が存在する・u桙フでしょうか?
> 
> 
> ---------------------------------------------------
> 古川 烈(ふるかわ れつ)
> 電子メール:r_f_315****@hotma*****
> ---------------------------------------------------
> 
> 
> *-*-*-*-*-*--
> SARI Nakamura
> (sari.****@nttco*****) 
> 
> _______________________________________________
> Wicket-ja-user mailing list
> Wicke****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user

_________________________________________________________________
MSN相談党、誕生。あなたの知識で日本を変えよう。党首には押切もえが就任!
http://questionbox.jp.msn.com/index.php3?StatusCheck=ON
-------------- next part --------------
HTMLの添付ファイルを保管しました...
ダウンロード 


Wicket-ja-user メーリングリストの案内
アーカイブの一覧に戻る