2011-01-22 37 views
9

如何在PageLoad()WebPage的構造函數中使用Wicket打開模式對話框,而不使用AjaxRequestTarget如何在PageLoad上打開ModalDialog

+0

描述在檢票口6,你可以添加一個```AjaxEventBehavior```您的頁面,打開裏面的行爲模式的。請參閱http://stackoverflow.com/a/17243712/2345093 – user2345093 2014-11-12 23:12:04

回答

11

我無法找到一個方法來打開它沒有一個Ajax請求,但它是完全可能的,當加載頁面時打開它,用一個簡單的行爲:

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

非常感謝! – sonjafon 2011-01-22 23:25:03

1

打開頁面加載模態窗口(無AJAX參與)在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

這不適用於Wicket 7.x – philonous 2017-07-04 12:54:08