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

时间:2015-12-02 14:17:35

标签: javascript iframe wicket domready

在使用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吗?

1 个答案:

答案 0 :(得分:1)

我会尽力澄清自己的问题,因为我发现了问题所在。也许有人想知道这一点。 问题是Wicket提供的replaceComponentTagBody方法。我没有在关于这种方法的使用的问题中提及,这对于试图回答的人来说更容易。我这样使用这种方法

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

而不是

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

区别在于iframe的结束标记,其中replaceComponentTagBody对此点很敏感,并且不允许Wicket呈现剩余的HTML代码。