右键单击然后单击模型窗口链接,首次在新选项卡中打开Wicket模型窗口时抛出错误

右键单击然后单击模型窗口链接,首次在新选项卡中打开Wicket模型窗口时抛出错误,wicket,Wicket,当我要使用Ajax链接URL从一个页面(A)转到另一个页面(B)时,显示如下…?wicket:interface=:58::# 在B页上,我有一个打开模型窗口的链接。当我们直接点击模型窗口的链接时,它工作正常,但当第一次通过右键点击打开新选项卡中的链接,然后点击模型窗口链接时,它抛出了一个错误 我正在使用setResponsePage(新B(变量))来访问另一个页面。当我使用setResponsePage(B.class)而不是setResponsePage(新B(变量))时,它工作正常 注意:

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

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

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

注意:我不想将pageparameter与bookmarkable和setResponsePage一起使用

错误是:

org.apache.wicket.WicketRuntimeException:组件列表表单:组:issueList:1:editStatus未在com.B[id=18]页上找到,侦听器接口=[RequestListenerInterface name=IBehaviorListener,method=public abstract void org.apache.wicket.behavior.IBehaviorListener.onRequest()] org.apache.wicket.protocol.http.request.invalidUrleException:org.apache.wicket.WicketRuntimeException:component listForm:group:issueList:1:editStatus未在com.B[id=18]页上找到,侦听器接口=[RequestListenerInterface name=IBehaviorListener,method=public abstract void org.apache.wicket.behavior.IBehaviorListener.onRequest()] 在 ... 还有27个

“编辑状态”是模型窗口上的链接名称

我正在使用的类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(.....) {

  }
}
A类扩展网页{
链接升级=新链接(“升级”){
公共void onClick(){
setResponsePage(新B(变量));
} };
}
B类扩展网页{
公共B(变量…){
}
最终ModalWindow模型=新ModalWindow(“更新模型”);
setContent(新的C(model,variables,model.getContentId());
添加项(新AjaxLink(*“编辑状态”**){
公共void onClick(AjaxRequestTarget目标){
模型显示(目标);
}
}.add(新图像(“edit_图标”、“Image/edit.png”));
}
}
C类扩展面板{
公共C(……){
}
}

我已解决此问题。错误与wicket组件的状态有关

使用无状态链接而不是链接

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

无状态链接升级=新的无状态链接(“升级”){

}}

}

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

  public void onClick() {

     setResponsePage(new B(Variables));