编程语言
首页 > 编程语言> > java-如何在检票口1.5中打开页面上的模式窗口

java-如何在检票口1.5中打开页面上的模式窗口

作者:互联网

我使用wicket 1.4.x已有一段时间,这里找到的解决方案效果很好:
How to open ModalDialog on PageLoad
但是当我转到wicket 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的窗口时,此窗口是使用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文件链接(显示:无,因此没有人看到):

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

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

标签:wicket,java
来源: https://codeday.me/bug/20191202/2086008.html