我正在尝试登录我的申请.首先,我抛出RestartResponseAtInterceptPageException(这是在我的BasePage上的WicketPanel中):
add(new Link<String>("signin") {
@Override
public void onClick() {
throw new RestartResponseAtInterceptPageException(SignIn.class);
}
});
Run Code Online (Sandbox Code Playgroud)
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");
}
}
});
Run Code Online (Sandbox Code Playgroud)
单击此按钮并且用户成功通过身份验证后,我不会重定向到我单击signIn链接的页面,而是保留在SignIn页面上?我试过调试这个,但一直无法找出出错的地方.
我很高兴有任何暗示导致我发现我的方式错误.
顺便说一句,这是wicket 1.5.1.
小更新,因为我从答案中得到了我需要的提示,还有一些解释要做.解决方案如下所示:
add(new Link<String>("signin") {
@Override
public void onClick() {
setResponsePage(new SignIn(getPage()));
}
});
Run Code Online (Sandbox Code Playgroud)
在签到类获取一个构造函数,显然需要一个网页,我只是设置页与setResponsePage回到那里,我开始没有所有的continueToOriginalDestination和异常抛出.
RestartResponseAtInterceptPageException用于在呈现页面时重定向到拦截页面.例如,在Page类的构造函数中ProtectedPage,如果没有用户登录,则为throw new RestartResponseAtInterceptPageException(SignIn.class).当SignIn页面调用continueToOriginalDestination(),用户被引导返回到原来的ProtectedPage目的地.
您的使用不是典型用法,RestartResponseAtInterceptPageException因为您将其放入链接处理程序中.你为什么不setResponsePage(SignIn.class)直接做?如果您确实想要返回单击"登录"链接时所在的确切页面,您还可以尝试将其更改为:
add(new Link<String>("signin") {
@Override
public void onClick() {
setResponsePage(getPage());
throw new RestartResponseAtInterceptPageException(SignIn.class);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1488 次 |
| 最近记录: |