当我要使用Ajax链接URL到一页(A)到另一页(B)时,显示如...?wicket:interface =:58 ::::#
在B页面上我有一个打开模型窗口的链接。当我们直接点击模型窗口的链接时它工作正常但是当新标签中的第一个打开链接右键单击然后点击模型窗口链接时抛出错误。
我正在使用setResponsePage(新的B(变量))来到另一个页面。当我使用setResponsePage(B.class)而不是setResponsePage(新的B(变量))时它工作正常。
注意:我不想将pageparameter与bookmarkable和setResponsePage一起使用。
错误是:
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()] org.apache.wicket.protocol.http.request.InvalidUrlException:org.apache.wicket.WicketRuntimeException:component listForm:group:issueList:1:edit comatus not page on page com.B [id = 18],listener interface = [RequestListenerInterface name = IBehaviorListener,method = 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(.....) {
}
}
答案 0 :(得分:1)
我已经解决了这个问题。错误与wicket组件的状态有关。
使用StatelessLink而不是Link。
正确的代码: A类扩展了WebPage {
StatelessLink已升级=新StatelessLink(“已升级”){
public void onClick() {
setResponsePage(new B(Variables));
}};
}
它也会从网址中删除“...?wicket:interface =:58 ::::#”。 当我们使用Link,AjaxLink时它会维护state.so当我们打开新选项卡中的任何链接时,它会改变服务器端的状态(更改组件的ID),但在客户端它将保持相同。因此,当我们点击同一页面上的任何链接时,没有更新的ID的信息,它会抛出错误。