2011-07-05 17 views
2

私は初めてのウィケットアプリケーションを書いていて、今日私の最初のロードブロックに走りました。ここに問題がある。 私はAjaxSubmitLinkを含むページを持っています。 onSubmitイベントでは、setResponsePageを使用してパネルを読み込みます。Wicket - SetResponsePageコールバックが発砲しない

私のアプリのホームページから、上記のページにハイパーリンクまたはタブを切り替える(wicket-extensionsの基本ITabを使用する)の2通りの方法でナビゲートできます。どちらも同じコンストラクタを呼び出します同じ引数で

ハイパーリンクを使用してページに移動すると、すべて正常に動作します。ただし、タブを使用してページに移動すると、AjaxSubmitLinkはパネルをロードしません。 Ajaxリクエストが作成されています。サーバーが処理しているのがわかりますが、コールバックが実行されていないようです。

私が気づいた別の奇妙なことに、後者の場合、firebugはコンソールに自分のAjaxリクエストを記録しません。前者の場合はリクエストをログに記録します。

私はここでちょっと困っています、ヒント、ポインタ、またはナッジ?

編集:リンクを宣言するコード。

editLink = new AjaxSubmitLink("editLink") { 
      @Override 
      protected void onSubmit(AjaxRequestTarget target, Form<?> masterForm) { 
        setResponsePage(new EditPage(programId)); 
      } 
     }; 

編集:私はちょっと回避策を見つけ

:私はシオマネキで作られたリクエストを視察し、失敗したAjaxの呼び出しは、代わりに200

UPDATEの、302を返しています。フィドラー情報は、私にhttps://issues.apache.org/jira/browse/WICKET-1703につながるsetResponsePageビヘイビアを検索するように誘導しました。

とにかく、私は厳密にリンクのPOSTリクエストを必要としなかったので、代わりにGETを使用して目的の動作を得ました。

面白いfind using fiddler:誤ったケースでapplication/x-www-form-urlencodedではなく、送信されたリクエストのcontent-typeがmultipart/form-dataです。

私はまだ実際の問題で暗闇の中にいる、何かの説明を感謝します。

+1

'setResponsePageは()'のウェブページではなく、Webコンポーネント(この場合はパネル)を使用しています。あなたのコードのいくつかがあなたを助けようとするのを見ることができますか? – Marcelo

+0

コードが提供されています。投稿する部分がわからない。また、フィドラーは、リクエストが302で返ってきたことを私に伝えます。 – Sans

+0

あなたが行ったことが別のページにリダイレクトされている場合、AjaxSubmitLinkを使用する目的は何ですか?とにかく完全なページリロードを行う必要がある場合は、通常のSubmitLinkを使用しないでください。 –

答えて

0

setResponsePage()は、代わりに.classファイルまたはインスタンス化されたクラスを取得する必要があります。以下のような

NextPage np = new NextPage(int a,int b); 
.... 
setResponsePage(np); 

または

setResponsePage(NextPage.class); 
+0

NextPageに値を渡す必要があることさえあります。次に、setResponsePage(newPage(var1))を使用することができます。 – BlondCode

関連する問題