2011-01-22 4 views
9

¿Cómo puedo abrir un diálogo modal en PageLoad(), en el constructor del WebPage y sin el AjaxRequestTarget, con Wicket?Cómo abrir ModalDialog en PageLoad

+0

En portillo 6, se pueden añadir una '' 'AjaxEventBehavior''' a su página y abrir su modal dentro de la conducta. Ver http://stackoverflow.com/a/17243712/2345093 – user2345093

Respuesta

11

no pude encontrar una manera de abrirla sin una petición Ajax, pero es perfectamente posible abrirlo cuando se carga la página, con un comportamiento muy simple:

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

¡Muchas gracias! – sonjafon

1

La apertura de una ventana modal de carga de la página (sin AJAX involucrado) se describe en 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

Esto no funciona con Wicket 7.x – philonous