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の作法というかそういうのがあったり、「このやりかたがいいよ~」っていうのを知ってる方がいらっしゃったら是非教えてください。
以上。