Wicketで戻るボタンを実装する

前回の続き。。。

戻るボタンもそうなんだけど、例えばログインが必要なページにアクセスしたときに、ログインしていなかった場合、ログインページに遷移する。で、ログインした後に、最初にアクセスしようとしたページに遷移する。

ということがしたい。というわけで、以下のようにしてみる。

LoginPage.java

public class LoginPage extends WebPage {
   private Class<? extends Page> clazz;
   public LoginPage() {
       this(HomePage.class);
   }
   public LoginPage(Class<? extends Page> clazz) {
      super();
      this.clazz = clazz;
      this.setDefaultModel(new CompoundPropertyModel<UserAccount>(new UserAccount()));
      this.add(this.createForm());
      this.add(new FeedbackPanel("message"));
   }

   private Form<Void> createForm(){
      //省略
      form.add(new Button("submit"){
         @Override
         public void onSubmit(){
            //ログイン処理

            this.setResponsePage(LoginPage.this.clazz);
         }
      });
   }
}

これで呼び出し元に遷移することができると思う。
でもパラメータとか考えたときにClassオブジェクトじゃなくて、WebPageオブジェクトを引数にした方がいいのかも。。。とか思った。あ、でもPageParametersを第二引数で受け取るコンストラクタつくればいいのか。。。

Wicket的にこのやり方で正しいのかどうかはまったく不明だが、俺がやりたいことは一応これでできる。しかもSessionやhiddenで前のページのURLを保持したりとかいうめんどうなことをしなくていいのですごく楽だ。

でも一応、Wicketの作法というかそういうのがあったり、「このやりかたがいいよ~」っていうのを知ってる方がいらっしゃったら是非教えてください。

以上。


2008/12/1追記
id:t_yanoさんからいいやり方を教わったので続きを書きました。