javascript wicket:StalePageException
我用的是wicket 6.20。在这个wicket页面中,我使用AbstractDefaultAjaxBehavior在wicket内接收鼠标点击(x,y坐标):
class CallFromJavaScript extends AbstractDefaultAjaxBehavior {
private static final long serialVersionUID = -123956851227148114L;
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);
String callbackUrl = getCallbackUrl().toString();
String javaScript = "$(document).ready(function()"
+ "{$(document).click(function(e) {"
+ "Wicket.Ajax.get({ u: '" + callbackUrl
+ "&x='+e.clientX+'&y='+e.clientY});});});";
response.render(OnDomReadyHeaderItem.forScript(javaScript));
}
@Override
protected void respond(final AjaxRequestTarget target) {
Request request = RequestCycle.get().getRequest();
x = Integer.parseInt(request.getRequestParameters()
.getParameterValue("x").toString());
y = Integer.parseInt(request.getRequestParameters()
.getParameterValue("y").toString());
//more code....
}
}
}
如果我用一个用户(一个会话)打开页面,一切正常。但如果我与其他用户(不同会话/其他计算机)打开页面,我会收到StalepageException:
RequestCycleExtra/qtp848034544-122-/wicket/wicket/page?2-.... 警告:-正在处理以下异常 组织。阿帕奇。小门。果心要求制图员。StalePageException:null
我注意到,如果我在页面上用计算机A单击,java就会进入renderHead方法。如果我在页面上单击计算机B,java将再次进入renderHead方法。或者java进入renderHead方法
如果我只使用一台计算机(一个会话)打开页面,java只会一次进入renderHead方法
有人能帮我吗
# 1 楼答案
您使用哪个URL在第二台计算机上打开页面?具体来说,URL是否包含页面ID?页面ID仅在同一会话中有效;无法从另一个会话中打开同一页实例。您只能在另一个会话中创建同一页面类的另一个实例
我认为这里需要澄清页面类和页面实例之间的关系