Некоторое время я использовал wicket 1.4.x, и найденное здесь решение работало довольно хорошо:
Как открыть ModalDialog на PageLoad
Но когда я перешел на калитку 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() );
}
}
Как я уже говорил выше, это работало в калитке 1.4: (