[Wicket-ja-user 378] ModalWindow.closeCurrentの挙動

Back to archive index

tohka****@ics***** tohka****@ics*****
2009年 9月 4日 (金) 21:39:53 JST


おおかわと申します。

#とても初歩的なところだと思うのですが。。。

 Wicket 1.4.1をつかっています。

 ページに1個ボタンがあってAboutダイアログ(ModalWindow)を出すだけという
非常に単純なプログラムを試しています。

 1回目のボタン押下での表示はうまくいくのですが、ModalWindow中に配置し
たOKボタンのonClick中で ModalWindow.closeCurrent を呼び出してcloseすると、
2回目以降ボタンを押しても下記のログでダイアログが開きません。

INFO: Received ajax response (69 characters)
INFO:
<?xml version="1.0" encoding="UTF-8"?><ajax-response></ajax-response>
INFO: Response parsed. Now invoking steps...
INFO: Response processed successfully.
INFO: Invoking post-call handler(s)...
INFO: refocus last focused component not needed/allowed

 ModalWindowの×で閉じたときはうまくいきますし、
ModalWindow.closeCurrent ではなく、ModalWindow オブジェクトの close を呼
ぶとうまくいきます。

 うまくいかない方は何故うまくいかないのでしょうか?OKボタンはPanelの中
にあるので、うまく行かない方で書きたいのですが…。もしくは、
WicketExamplesのようにPanelにModalWindowのオブジェクトを渡してやる方法も
あると思うのですが、シンプルでないと思うのです。

いまくいかない方:
public class AboutPanel extends Panel {
   public AboutPanel(String id) {
        super(id);
        add(new AjaxLink("okButton") {
            @Override
            public void onClick(AjaxRequestTarget target) {
                ModalWindow.closeCurrent(target);
            }
        });
    }
}

public class AboutDialog extends ModalWindow {
    AboutPanel _panel;
    public AboutDialog(String id) {
        super(id);
        setContent(_panel = new AboutPanel(getContentId()));
    }
}

うまくいく方:
public class AboutPanel extends Panel {
    public AboutPanel(String id) {
        super(id);
    }
}

public class AboutDialog extends ModalWindow {
    AboutPanel _panel;
    public AboutDialog(String id) {
        super(id);
        setContent(_panel = new AboutPanel(getContentId()));
        _panel.add(new AjaxLink("okButton") {
            @Override
            public void onClick(AjaxRequestTarget target) {
                AboutDialog.this.close(target);
            }
        });
    }
}

 よろしくお願いいたします。

-- 
大川 智久




Wicket-ja-user メーリングリストの案内
Back to archive index