[Seasar-user:12871] Re: ブラウザの戻るボタン使用について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 2月 14日 (木) 19:55:29 JST


小林 (koichik) です.

Date:    Thu, 14 Feb 2008 16:18:55 +0900
From:    [E-MAIL ADDRESS DELETED] (加地 隼也)
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:12866] ブラウザの戻るボタン使用について

> 1 doメソッド処理が開始しない
> 
> 現象
>  画面の遷移時ですが、A画面からボタン押下(doメソッド)によりB画面(別サブアプリケーション)に遷移し、B画面で、ブラウザの戻るボタンを使用。
>  A画面で再度、同ボタン押下で画面遷移をしようとした場合、doメソッドが呼ばれず、psotbackとして処理され、遷移が行なわれない。
>  また、postbackの為、初期でセットしたコンボボックスの値等が全て空白になります。

postback という用語が何を指してるか
分からないのですが,Teeda としては
フォームをサブミットした場合は常に
postback になります.

戻ってサブミットも通常の postback として
普通に処理されるはずです.
do〜() メソッドが呼ばれないということは,
バリデーションでエラーが発生していることが
考えられます.

もし HTML にエラーメッセージの表示エリアが
なければ追加してみてください.


> 2 サブアプリケーションの画面遷移後戻るボタン押下時
> 
> 現象
>  1とほぼ同じですが、変数をサブアプリケーションスコープで宣言し、上記と同じように、
>  他サブアプリケーション(複数のサブアプリケーションから遷移可能な共通画面)に遷移後、
>  ブラウザの戻るボタンを使用した場合、戻った画面内の変数はクリアされています。
>  その為doメソッドを押下し、処理を行なった場合、nullpointのエラーとなります。
>  正規のルート(画面内ボタン押下)の場合についてはセッションにデータを保持、復元を
>  行なっています。
> 
> 解決方法として、 セッションにデータを持たさないといけないでしょうか?
> 戻るボタンの対応を入れる場合、サブアプリケーションスコープは使えないでしょうか?

サブアプリケーションをまたがって「戻る」
ボタンを有効にするには,現状ではアプリ側で
セッションに状態を保存する必要があります.
# セッションを直接扱うのではなく,
# セッションスコープの Dto を使うのがいいと
# 思いますが.


-- 
Koichi Kobayashi <[E-MAIL ADDRESS DELETED]>



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