continueToOriginalDestination不会让我回到原始页面

Yas*_*ima 1 wicket wicket-1.5

我正在尝试登录我的申请.首先,我抛出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和异常抛出.

ber*_*nie 6

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)