Come posso aprire una finestra di dialogo modale su PageLoad()
, nel costruttore di WebPage
e senza il AjaxRequestTarget
, con Wicket?Come aprire ModalDialog su PageLoad
9
A
risposta
11
non riuscivo a trovare un modo per aprire senza una richiesta Ajax, ma è perfettamente possibile aprirlo quando la pagina viene caricata, con un semplice comportamento:
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>
+0
Grazie mille! – sonjafon
1
Apertura di una finestra modale al caricamento della pagina (senza AJAX coinvolto) descritto nel 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;
}
}
+0
Questo non funziona con Wicket 7.x – philonous
In wicket 6 è possibile aggiungere un '' AjaxEventBehavior''' alla tua pagina 'e aprire la modale all'interno del comportamento. Vedi http://stackoverflow.com/a/17243712/2345093 – user2345093