RestartResponseExceptionでリダイレクトしない件

Wicketでページを遷移させる方法としてsetResponsePageメソッドがあるのですが、全ての処理が終わった後の遷移先の指定なので、たとえば、ログインしてからアクセスしてほしいページなので処理を中断してログインページに飛ばしたい、という状況のときには少し不便です。
ちなみに、setResponsePageで書くとしたら以下のような感じ。

setResponsePage(LoginPage.class);
return;

RestartResponseExceptionで遷移させる

これに対する解決策として、RestartResponseExceptionをthrowする方法があります。
RestartResponseExceptionのコンストラクタで、遷移したい先を指定してやります。

throw new RestartResponseException(LoginPage.class);

RestartResponseExceptionだとリダイレクトされない

で、ここまではいくつかのサイトで解説してあったのですが、RestartResponseExceptionを使ってページを遷移させると、なぜか遷移前のページのURLのままになってしまいます。
挙動としてはフォワードのような動きをしており、どうやればきちんとリダイレクトできるかわからなかったのですが、「http://d.hatena.ne.jp/t_yano/20070626/1182882962」で紹介されているsetRedirect(false)の動作に近いものを感じたので、以下のように書き直したところ、うまくリダイレクトしてくれました。

setRedirect(true);
throw new RestartResponseException(LoginPage.class);

どうやらRestartResponseExceptionを利用するとsetRedirect(false)として実行されるようで、以下に書くのと同じ挙動をするようです。

setRedirect(false);
setResponsePage(LoginPage.class);
return;

setRedirect(false)の応用

RestartResponseException(setRedirect(false))でPageクラスを指定すると、URLが変化せずフォワードのような動作*1をすることがわかりました。
たとえばログイン前とログイン後で同じURLでも劇的に表示するものが変化するようなページを作りたい時があると思います。
このRestartResponseExceptionを利用すれば、URLを変化させることなくログイン後には別のPageクラスを表示することが可能になります。
というか、もしかしたらこういう使われ方を想定してのものなのかな?

*1:正確にはhttp://d.hatena.ne.jp/t_yano/20070626/1182882962を参照してください