2011-01-22 10 views
9

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

+0

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

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

Problemi correlati