How open modal window on page load in wicket 1.5

夙愿已清 提交于 2019-12-10 10:07:05

问题


I was using wicket 1.4.x for some time and solution found here worked pretty well: How to open ModalDialog on PageLoad But when I moved to wicket 1.5 I simply don't know how make a modalwindow popup on page load.

A piece of code looks like this:

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

To explain, I'm checking if page has a certain parameter. When there is one I search user with that parameter in datebase. When I have one I'd like to open PlainModalWindow, this window is class extending normal ModalWindow with a css removing style and that's it. The load behavior looks like this:

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

As I meanioned above, it worked in wicket 1.4 :(


回答1:


As I couldn't find answer for this thing I made a workaround. Maybe it helps somebody. First add to HTML file link (display: none so no one will see it) :

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

Create an AjaxLink:

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

And In renderHead method check your conditions for opening popup :

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

Hopefully it will help somebody, works for me :)



来源:https://stackoverflow.com/questions/8063002/how-open-modal-window-on-page-load-in-wicket-1-5

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!