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); } }); } } よろしくお願いいたします。 -- 大川 智久