setResponsePageでAjaxSubmitLinkが無効になったりならなかったり
Wicket書いててちょいと躓いたのでメモ。
コーディングの仕方によってAjaxSubmitLinkやAjaxButtonが効かなくなる現象が起きる訳ですが、そのうちの1つのパターンを発見。
条件:
- メインウィンドウとサブウィンドウにAjaxSubmitLinkが1つづつ
- サブウィンドウのAjaxSubmitLinkをクリックするとsetResponsePageする
現象:
- サブウィンドウのAjaxSubmitLinkをクリックすると、メインウィンドウのAjaxSubmitLinkが効かなくなることがある
結論からいうと、setResponsePageの引数にclassを渡した場合はAjaxSubmitLinkは有効となり、Pageクラスのインスタンスを渡した場合には無効となります。
実際のコードを紹介(サブウィンドウのAjaxSubmitLink部分を抜粋)
Form form = new Form("form");
add(form);form.add(new AjaxSubmitLink("link") {
@Override
public void onSubmit(AjaxRequestTarget target, Form form) {
setResponsePage(OtherPage.class); // OK
setResponsePage(new OtherPage()); // ダメ
}
});
この挙動の違い、何なんでしょう?
追いかけてみますかね。