当页面包含 iframe 时,Wicket 无法重新加载页面 onSubmit

Wicket fails to reload the page onSubmit when the page contains iframe

使用 Wicket 按钮提交表单后,当响应包含 iframe 时,页面无法完全重新加载。问题是 wicket 试图在 window.domready 上绑定一些事件侦听器,但它失败了 "Cannot bind a listener for event "change" 在元素 "topRightItemTypeChoice7" 上,因为该元素不在 DOM"

我已经用 httpfox 插件分析了响应文本,响应中存在具有此 ID 的组件。

下面是 Wicket 尝试绑定事件的 JS 片段

Wicket.Event.add(window, "domready", function(event) { 
$('#topRightItemTypeChoice7').uniform();;
Wicket.Ajax.ajax({"c":"topRightItemTypeChoice7","ad":true,"u":"./PrDashBoardConfigurationPage?5-2.IBehaviorListener.0-container-configuratorForm-topRightDiv-topRightItemTypeChoice","e":"change","m":"POST"});;

来自响应

的 html 组件
<select name="topRightDiv:topRightItemTypeChoice" id="topRightItemTypeChoice7">

当我简单地从页面中删除 iframe 时一切正常。 知道 window.domready 的 iframe 有什么不同吗?

我会尝试澄清我自己的问题,因为我发现问题出在哪里。也许有人想知道这个。 问题是 Wicket 提供的 replaceComponentTagBody 方法。我没有在问题中提到有关使用此方法的问题,这可能会使试图回答的人更容易。我就是这样用的

replaceComponentTagBody(markupStream, openTag, "<iframe id=''/>");

而不是

replaceComponentTagBody(markupStream, openTag, "<iframe id=''></iframe>");

不同之处在于 iframe 的结束标记,其中 replaceComponentTagBody 对这一点敏感并且不允许 Wicket 呈现剩余的 HTML 代码。