在wicket 1.5中如何在页面上打开模态窗口

我正在使用wicket 1.4.x一段时间,这里找到的解决方案工作得很好: 如何在PageLoad上打开ModalDialog但是当我转移到wicket 1.5时,我根本不知道如何在页面加载时创建一个modalwindow弹出窗口。

一段代码看起来像这样:

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 ); 

为了解释,我正在检查页面是否有某个参数。 当有一个我在datebase中搜索具有该参数的用户时。 当我有一个我想打开PlainModalWindow时,这个窗口是使用css删除样式扩展普通ModalWindow的类,就是这样。 加载行为如下所示:

 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() ); } } 

正如我在上面的意思,它在wicket 1.4 🙁

由于我找不到这个问题的答案,我做了一个解决方法。 也许这有助于某人。 首先添加到HTML文件链接(显示:无,因此没有人会看到它):

  

创建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 ); } 

希望它会帮助某人,为我工作:)