2011-01-22 14 views
9

Làm cách nào để mở hộp thoại phương thức trên PageLoad(), trong hàm tạo của WebPage và không có AjaxRequestTarget, với Wicket?Cách mở ModalDialog trên PageLoad

+0

Trong wicket 6 bạn có thể thêm một '' 'AjaxEventBehavior''' vào trang của bạn và mở modal của bạn bên trong hành vi. Xem http://stackoverflow.com/a/17243712/2345093 – user2345093

Trả lời

11

tôi không thể tìm thấy một cách để mở nó mà không có một yêu cầu Ajax, nhưng nó hoàn toàn có thể mở nó khi trang web được tải, với một hành vi đơn giản:

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

Cảm ơn bạn rất nhiều! – sonjafon

1

Mở một cửa sổ modal trên tải trang (không AJAX tham gia) được mô tả trong 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

Tính năng này không hoạt động với Wicket 7.x – philonous