在使用Wicket按钮提交表单后,当响应包含iframe时,页面无法完全重新加载。问题是wicket试图在window.domready上绑定一些事件监听器,但它失败了 “无法绑定元素”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吗?
答案 0 :(得分:1)
我会尽力澄清自己的问题,因为我发现了问题所在。也许有人想知道这一点。
问题是Wicket提供的replaceComponentTagBody
方法。我没有在关于这种方法的使用的问题中提及,这对于试图回答的人来说更容易。我这样使用这种方法
replaceComponentTagBody(markupStream, openTag, "<iframe id=''/>");
而不是
replaceComponentTagBody(markupStream, openTag, "<iframe id=''></iframe>");
区别在于iframe的结束标记,其中replaceComponentTagBody
对此点很敏感,并且不允许Wicket呈现剩余的HTML代码。