0

Ajax リンク URL を使用してあるページ (A) から別のページ (B) に移動すると、次のように表示されます ...?wicket:interface=:58::::#

Bページには、モデルウィンドウを開くためのリンクがあります。モデルウィンドウのリンクを直接クリックすると正常に動作しますが、最初に右クリックして新しいタブでリンクを開き、モデルウィンドウリンクをクリックするとエラーがスローされます。

別のページに来るために setResponsePage( new B(variable)) を使用しています。

注:bookmarkable および setResponsePage で pageparameter を使用したくありません。

エラー:

org.apache.wicket.WicketRuntimeException: コンポーネント listForm:group:issueList:1: editStatusがページ com.B[id = 18] に見つかりません、リスナー インターフェイス = [RequestListenerInterface 名 = IBehaviorListener、メソッド = public abstract void org.apache.wicket .behavior.IBehaviorListener.onRequest()] org.apache.wicket.protocol.http.request.InvalidUrlException: org.apache.wicket.WicketRuntimeException: コンポーネント listForm:group:issueList:1:editStatus がページ com.B[id に見つかりません= 18]、リスナー インターフェイス = [RequestListenerInterface 名 = IBehaviorListener、メソッド = public abstract void org.apache.wicket.behavior.IBehaviorListener.onRequest()] で .................. ......... ... ... 27件以上

「editStatus」はモデルウィンドウ上のリンク名です。

クラスAを使用しているコード

class A extends WebPage {

   Link<String> escalated = new Link<String>("escalated") {

      public void onClick() {

         setResponsePage(new B(Variables));
   } };

}


class B extends WebPage {


   public B(variables..) {
   }

   final ModalWindow model = new ModalWindow("UpdateModel");

   model.setContent(new C(model,variables,model.getContentId()));

   item.add(new AjaxLink<Void>(**"editStatus"**) {
      public void onClick(AjaxRequestTarget target) {

         model.show(target);

      }
   }.add(new Image("edit_icon", "image/edit.png")));   

  }
}


class C extends Panel {

  public C(.....) {

  }
}
4

1 に答える 1

1

この問題は解決しました。エラーはウィケット コンポーネントの状態に関連していました。

Link の代わりに StatelessLink を使用します。

正しいコード: クラス A extends WebPage {

StatelessLink escalated = new StatelessLink("escalated") {

  public void onClick() {

     setResponsePage(new B(Variables));

} };

}

また、URL から「...?wicket:interface=:58::::#」を削除します。Link、AjaxLink を使用すると状態が維持されるため、新しいタブでリンクを開くと、サーバー側で状態が変更されますが (コンポーネントの ID が変更されます)、クライアント側では同じままです。そのため、同じページのリンクをクリックすると、更新された ID の情報がなく、エラーがスローされます。

于 2012-06-25T14:47:04.757 に答える