0

当我使用 Ajax 链接 URL 将一个页面 (A) 转到另一个页面 (B) 时,显示如下 ...?wicket:interface=:58::::#

在 B 页面上,我有一个打开模型窗口的链接。当我们直接单击模型窗口的链接时,它工作正常,但是当第一次通过右键单击在新选项卡中打开链接然后单击模型窗口链接时,它会抛出错误。

我正在使用 setResponsePage(new B(variable)) 来访问另一个页面。当我使用 setResponsePage(B.class) 而不是 setResponsePage(new B(variable)) 时,它工作正常。

注意:我不想将 pageparameter 与可书签和 setResponsePage 一起使用。

错误是:

org.apache.wicket.WicketRuntimeException: 组件 listForm:group:issueList:1:在页面 com.B[id = 18] 上找不到 editStatus,侦听器接口 = [RequestListenerInterface name=IBehaviorListener,method=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 name=IBehaviorListener, method=public abstract void org.apache.wicket.behavior.IBehaviorListener.onRequest()] at .... ............ 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

我已经解决了这个问题。错误与检票口组件的状态有关。

使用 StatelessLink 而不是 Link。

正确的代码:A类扩展网页{

StatelessLink 升级 = 新 StatelessLink("升级") {

  public void onClick() {

     setResponsePage(new B(Variables));

} };

}

它还会从 url 中删除 "...?wicket:interface=:58::::#"。当我们使用 Link、AjaxLink 时,它会保持状态。因此,当我们在新选项卡中打开任何链接时,它会在服务器端更改状态(更改组件的 id),但在客户端它将保持不变。因此,当我们单击同一页面上的任何链接时,没有更新 id 的信息,它会引发错误。

于 2012-06-25T14:47:04.757 回答