0

Wicket ボタンを使用してフォームを送信した後、応答に iframe が含まれていると、ページが完全にリロードされません。問題は、ウィケットが window.domready でいくつかのイベント リスナーをバインドしようとすることですが、「要素が DOM にないため、要素 "topRightItemTypeChoice7" のイベント "change" のリスナーをバインドできません」と言って失敗します。

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 を作る違いは何ですか?

4

1 に答える 1

1

問題がどこにあるのかを見つけたので、私は自分の質問を明確にしようとします。多分誰かがこれを知りたいと思うでしょう。問題は、replaceComponentTagBodyWicket が提供するメソッドでした。この方法の使用法についての質問では言及していませんでした。この方法でメソッドを使用していました

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

それ以外の

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

違いは、iframe の終了タグにあり、replaceComponentTagBodyこの点に敏感で、Wicket が残りの HTML コードをレンダリングすることを許可しませんでした。

于 2015-12-08T16:08:23.657 に答える