从Wicket中的弹出表单submit在父页面中回调

从Wicket中的弹出表单submit在父页面中回调,wicket,wicket-6,Wicket,Wicket 6,我有一个带有多个面板的Wicket页面,允许用户在弹出窗口中打开一个新的Wicket页面。用户可以输入一些数据,在弹出窗口中单击submit,并在处理提交后关闭 如何在弹出窗口已关闭的父页面中获取回调,以便刷新父页面(父页面需要反映用户在弹出窗口中输入的数据) 是否可以在负责弹出窗口打开的父页面的面板中接收回调,以便我只能刷新面板本身而不是整个页面(这也需要获取AjaxRequestTarget)?我遇到了同样的问题,我使用javascript重新加载父页面解决了这个问题。我不知道使用wicke

我有一个带有多个面板的Wicket页面,允许用户在弹出窗口中打开一个新的Wicket页面。用户可以输入一些数据,在弹出窗口中单击submit,并在处理提交后关闭

如何在弹出窗口已关闭的父页面中获取回调,以便刷新父页面(父页面需要反映用户在弹出窗口中输入的数据)


是否可以在负责弹出窗口打开的父页面的面板中接收回调,以便我只能刷新面板本身而不是整个页面(这也需要获取AjaxRequestTarget)?

我遇到了同样的问题,我使用javascript重新加载父页面解决了这个问题。我不知道使用wicket是否有更好的解决方案。 但这是我的:

在弹出的java文件中:

//...
Form<Void> form = new Form<Void>("form") {
  boolean close = false; // it says when the user has closed the window
  @Override protected void onSubmit() {
    //...
    close = true;
  }
  @Override public void renderHead(IHeaderResponse response) {
    super.renderHead(response);
    if(close) {
      // This javascript will close the file
      response.renderJavaScriptReference("js/close.js");
    }
  }
};
在弹出窗口的HTML中:

    <script type="text/javascript">
       // if the var user is set and true it will reload the opener page and close itself
      function reload() {
        if(typeof _close != 'undefined' && _close) {                    
          window.opener.location.reload();
          self.close();
        }
      }
    </script>

//如果var user被设置为true,它将重新加载开启器页面并关闭自身
函数重载(){
如果(typeof _close!=“undefined”&&&_close){
window.opener.location.reload();
self.close();
}
}
这个解决方案相当混乱(即使是JS,它也是高度可改进的),但它是有效的:p 例如,现在我使用JQuery,将重载函数括在
$(document.ready(function(){…})
中;我看不出有什么理由不把所有的JS放在文件(close.JS)中,而不是在HTML中拆分成一个单独的文件。

1)您需要在父页面中定义模式窗口以及打开它所需的维度

2) 使用
setWindowClosedCallback(ModalWindow.WindowClosedCallback)
(在父页面中)方法,并声明此方法中的代码段,该代码段在模式关闭后将被删除。 有关更多信息,请参阅此


希望有帮助。

查看WicketStuff中的ModalX项目。它具有内置的“现成”管道,适用于所有模式,包括一个非常简单的IWindowCloseListener接口,您只需将其传递到ModalX模式实例中,它就可以安排正确的回调,在表单关闭时提供模态实例和AjaxRequestTarget。

如果使用ModalWindow,则关闭时会有回调。很遗憾,我不能使用ModalWindow,我必须使用“真实”弹出窗口。
    <script type="text/javascript">
       // if the var user is set and true it will reload the opener page and close itself
      function reload() {
        if(typeof _close != 'undefined' && _close) {                    
          window.opener.location.reload();
          self.close();
        }
      }
    </script>