我正在尝试登录我的应用程序。首先我抛出 RestartResponseAtInterceptPageException (这是在我的 BasePage 的 WicketPanel 中):
add(new Link<String>("signin") {
@Override
public void onClick() {
throw new RestartResponseAtInterceptPageException(SignIn.class);
}
});
SignIn Page 类包含一个用于登录的表单(内部私有类),带有以下提交按钮:
add(new Button("signinButton") {
@Override
public void onSubmit() {
final User user = model.getObject();
final boolean result = MySession.get().authenticate(user);
if (result) {
if (!continueToOriginalDestination()) {
setResponsePage(MySession.get().getApplication().getHomePage());
}
} else {
error("Authentication failed");
}
}
});
当单击此按钮并且用户成功通过身份验证时,我没有被重定向到单击登录链接的页面,而是停留在登录页面上?我试过调试这个,但一直没能找出哪里出了问题。
我很高兴有任何提示导致我发现自己的方式错误。
顺便说一句,这是检票口 1.5.1。
小更新,因为我从答案中得到了我需要的提示,还有一些解释要做。解决方案如下所示:
add(new Link<String>("signin") {
@Override
public void onClick() {
setResponsePage(new SignIn(getPage()));
}
});
SignIn 类有一个构造函数,该构造函数显然需要一个页面,我只是将该页面设置为 setResponsePage 以返回到我开始的位置,而没有所有 continueToOriginalDestination 和异常抛出。