2011-11-09 38 views
3

我使用的1.4.x檢票了一段時間,解決方案在這裏找到工作得很好: How to open ModalDialog on PageLoad 但是,當我移動到檢票口1.5我根本不知道怎麼做模式窗口在頁面加載時彈出。如何開放模式窗口1.5

的一段代碼看起來是這樣的:

private PlainModalWindow tmpPassChange = new PlainModalWindow("tmp_pass_change"); 
tmpPassChange.add(new OpenWindowOnLoadBehavior()); 
tmpPassChange.setInitialHeight(418); 
tmpPassChange.setResizable(false); 
tmpPassChange.setMaskType(ModalWindow.MaskType.SEMI_TRANSPARENT); 
tmpPassChange.setPageCreator(new ModalWindow.PageCreator() 
{ 
    private static final long serialVersionUID = 1L; 

    public Page createPage() 
    { 
    return new TmpPassChange(u, tmpPassChange); 
    } 
}); 
add(tmpPassChange); 

要解釋,我檢查,如果頁面具有一定的參數。當有一個我在數據庫中使用該參數的用戶時。當我有一個我想要打開PlainModalWindow,這個窗口是擴展正常的ModalWindow類與CSS刪除樣式,就是這樣。加載行爲看起來是這樣的:

public class OpenWindowOnLoadBehavior extends AbstractDefaultAjaxBehavior 
{ 

private static final long serialVersionUID = 1L; 

@Override 
protected void respond(AjaxRequestTarget target) 
{ 
    ModalWindow window = (ModalWindow) getComponent(); 
    window.show(target); 
} 

public void renderHead(IHeaderResponse response) 
{ 
    response.renderOnLoadJavaScript(getCallbackScript().toString()); 
} 
} 

正如我上面meanioned,它曾在檢票1.4 :(

+0

任何JavaScript錯誤? –

+0

nope控制檯和ajax調試窗口已清除...多數民衆贊成它看起來行爲甚至沒有添加到頁面 – kamil

回答

3

,因爲我無法找到這件事情我做了一個變通的答案也許它可以幫助別人。首先添加到HTML文件鏈接(顯示:無,所以沒有人會看到它):

<a style="display: none;" wicket:id="openPopup" id="openPopup"/> 

創建AjaxLink:

AjaxLink openPopup = new AjaxLink("openPopup") 
{ 
    @Override 
    public void onClick(AjaxRequestTarget target) 
    { 
     tmpPassChange.show(target); 
    } 
}; 
add (openPopup); 

並在renderHead方法檢查用於打開彈出條件:

public void renderHead(IHeaderResponse response) 
{ 
    String jQueryString = ""; 
    if (u != null) 
    { 
     jQueryString += "jQuery('#openPopup').trigger('click');"; 
    } 
    response.renderOnLoadJavaScript(jQueryString); 
} 

希望這會幫助別人,在控制檯/調試窗口工作對我來說:)

+0

當然,我忘了提及你需要jQueery這個解決方案 – kamil