wicket-extensionsにModalWindowというクラスがあったので使ってみた。ModalWindow#setPageCreatorでModalWindow.PageCreatorを実装したクラスのオブジェクトを渡さないと表示させるときに例外が発生する。ModalWindow#showでAjaxRequestTargetを渡す必要があるので、いきなり表示させるのは無理っぽい?以下ソース
ModalWindowを表示させるページのHTML、ファイル名はModalWindowTest.html
<html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <div wicket:id="modal"></div> <form wicket:id="form"> <input type="button" value="表示" wicket:id="button"/> </form> </body> </html>
ModalWindowを表示させるページのクラス、ファイル名はModalWindowTst.java
package modal; import org.apache.wicket.Page; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.form.AjaxButton; import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; public class ModalWindowTest extends WebPage{ public ModalWindowTest(){ final ModalWindow window = new ModalWindow("modal"); window.setTitle("Modal Window"); window.setPageCreator(new ModalWindow.PageCreator(){ public Page createPage(){ return new ModalWindowPage(); } }); Form form = new Form("form"); AjaxButton button = new AjaxButton("button"){ @Override protected void onSubmit(AjaxRequestTarget target, Form form){ window.show(target); } }; add(window); form.add(button); add(form); } }
ModalWindowに表示させるページのHTML、ファイル名はModalWindowPage.html
<html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> ModalWindowのコンテンツ </body> </html>
ModalWindowに表示させるページのクラス、ファイル名はModalWindowPage.java
package modal; import org.apache.wicket.markup.html.WebPage; public class ModalWindowPage extends WebPage{ }
アプリケーションクラス、ファイル名はModalWindowTestApplication.java
package modal; import org.apache.wicket.protocol.http.WebApplication; public class ModalWindowTestApplication extends WebApplication{ @Override public Class<ModalWindowTest> getHomePage(){ return ModalWindowTest.class; } @Override public void init(){ getRequestCycleSettings().setResponseRequestEncoding("UTF-8"); getMarkupSettings().setDefaultMarkupEncoding("UTF-8"); } }
最後にフィルタマッピング
<filter> <filter-name>modal</filter-name> <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>modal.ModalWindowTestApplication</param-value> </init-param> </filter> <filter-mapping> <filter-name>modal</filter-name> <url-pattern>/modal/*</url-pattern> </filter-mapping>