当页面包含 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 代码。
使用 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 代码。