我使用的是 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....
}
}
}
如果我使用一个用户(一个 session )打开页面,则一切正常。但是如果我使用其他用户(不同的 session /其他计算机)打开页面,我会收到 StalepageException:
RequestCycleExtra/qtp848034544-122 -/wicket/wicket/page?2-.... 警告:- 处理以下异常 org.apache.wicket.core.request.mapper.StalePageException:null
我注意到,如果我在页面上单击计算机 A,java 就会进入 renderHead 方法。如果我在页面上单击计算机 B,java 会再次进入 renderHead 方法。或者 java 进入 renderHead 方法。
如果我只用一台计算机(一个 session )打开页面,java 只会进入 renderHead 方法一次。
有人可以帮助我吗?
最佳答案
您使用哪个 URL 在第二台计算机上打开页面?具体来说,URL 中是否包含页面 ID?页面ID仅在同一 session 内有效;您无法从另一个 session 中打开同一页面实例。您只能在另一个 session 中创建同一页面类的另一个实例。
我认为这里需要对页面类与页面实例之间进行一些澄清。
关于javascript - Wicket 口:StalePageException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32891700/