我怎样才能打开一个模式对话框PageLoad()
在的构造函数WebPage
并没有AjaxRequestTarget
,使用Wicket?
I couldn't find a way to open it without an Ajax request, but it's perfectly possible to open it when the page is loaded, with a simple behavior:
HomePage.java
public class HomePage extends WebPage {
public HomePage(PageParameters pageParameters) {
super(pageParameters);
ModalWindow modal = new ModalWindow("modal");
modal.add(new OpenWindowOnLoadBehavior());
modal.setPageCreator(new ModalWindow.PageCreator() {
@Override
public Page createPage() {
return new RedirectPage("http://www.google.com");
}
});
add(modal);
}
}
OpenWindowOnLoadBehavior.java
public class OpenWindowOnLoadBehavior extends AbstractDefaultAjaxBehavior {
@Override
protected void respond(AjaxRequestTarget target) {
ModalWindow window = (ModalWindow) getComponent();
window.show(target);
}
@Override
public void renderHead(IHeaderResponse response) {
response.renderOnLoadJavascript(getCallbackScript().toString());
}
}
HomePage.html
<html xmlns:wicket="http://wicket.apache.org">
<body>
<div wicket:id="modal"></div>
</body>
</html>
Opening a modal window on page load (no AJAX involved) described in Wicket Wiki
/**
* @author Ernesto Reinaldo Barreiro
*/
public class OpenOnLoadModalWindow extends ModalWindow implements IHeaderContributor {
private static final long serialVersionUID = 1L;
/**
* @param id
*/
public OpenOnLoadModalWindow(String id) {
super(id);
}
/**
* @param id
* @param model
*/
public OpenOnLoadModalWindow(String id, IModel<?> model) {
super(id, model);
}
/**
* Adds the JavaScript to initially open modal window.
*/
public void renderHead(IHeaderResponse response)
{
response.renderOnDomReadyJavascript(getWindowOpenJavascript());
}
/*
* (non-Javadoc)
* @see org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow#makeContentVisible()
*/
@Override
protected boolean makeContentVisible()
{
return true;
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.