Wicket 继续原创目的不会让我回到原创页面

Wicket 继续原创目的不会让我回到原创页面,wicket,wicket-1.5,Wicket,Wicket 1.5,我正在尝试登录我的申请。首先,我抛出RestartResponseAtInterceptPageException(它位于我的BasePage上的WicketPanel中): 单击此按钮且用户成功通过身份验证后,我不会被重定向到单击登录链接的页面,而是停留在登录页面上?我试过调试这个,但没能找出哪里出了问题 我很高兴有任何提示能让我发现自己的错误 顺便说一下,这是wicket 1.5.1 小更新因为我从答案中得到了我需要的提示,还有一些解释要做。解决方案如下所示: add(new Link<

我正在尝试登录我的申请。首先,我抛出RestartResponseAtInterceptPageException(它位于我的BasePage上的WicketPanel中):

单击此按钮且用户成功通过身份验证后,我不会被重定向到单击登录链接的页面,而是停留在登录页面上?我试过调试这个,但没能找出哪里出了问题

我很高兴有任何提示能让我发现自己的错误

顺便说一下,这是wicket 1.5.1

小更新因为我从答案中得到了我需要的提示,还有一些解释要做。解决方案如下所示:

add(new Link<String>("signin") {
    @Override
    public void onClick() {
         setResponsePage(new SignIn(getPage()));
    }
});
添加(新链接(“登录”){
@凌驾
公共void onClick(){
setResponsePage(新登录(getPage());
}
});

SignIn类得到一个构造函数,该构造函数显然会获取一个页面,我只需将该页面设置为带有setResponsePage,以返回到我开始的位置,而无需所有continueToOriginalDestination和异常抛出。

RestartResponseAtInterceptPageException
用于在呈现一个页面时重定向到拦截页面页例如,在页面类的构造函数中,如果没有用户登录,则
抛出新的RestartResponseAtInterceptPageException(SignIn.class)
。当
登录
页面调用
continueToOriginalDestination()
时,用户将被带回原始
受保护页面
目的地

您使用的不是
RestartResponseAtInterceptPageException
的典型用法,因为您将其放入链接处理程序中。为什么不直接执行
setResponsePage(SignIn.class)
?如果您确实想返回单击“登录”链接时所处的确切页面,您也可以尝试将其更改为:

add(new Link<String>("signin") {
   @Override
   public void onClick() {
       setResponsePage(getPage());
       throw new RestartResponseAtInterceptPageException(SignIn.class);
   }
});
添加(新链接(“登录”){
@凌驾
公共void onClick(){
setResponsePage(getPage());
抛出新的RestartResponseAtInterceptPageException(SignIn.class);
}
});

RestartResponseAtInterceptPageException
用于在呈现页面时重定向到拦截页面。例如,在页面类的构造函数中,如果没有用户登录,则
抛出新的RestartResponseAtInterceptPageException(SignIn.class)
。当
登录
页面调用
continueToOriginalDestination()
时,用户将被带回原始
受保护页面
目的地

您使用的不是
RestartResponseAtInterceptPageException
的典型用法,因为您将其放入链接处理程序中。为什么不直接执行
setResponsePage(SignIn.class)
?如果您确实想返回单击“登录”链接时所处的确切页面,您也可以尝试将其更改为:

add(new Link<String>("signin") {
   @Override
   public void onClick() {
       setResponsePage(getPage());
       throw new RestartResponseAtInterceptPageException(SignIn.class);
   }
});
添加(新链接(“登录”){
@凌驾
公共void onClick(){
setResponsePage(getPage());
抛出新的RestartResponseAtInterceptPageException(SignIn.class);
}
});

尝试在表单中而不是在按钮中实现
onSubmit
-方法。好主意,从未想过。不过,这并没有解决问题。但在伯尼的暗示下,我找到了解决办法。谢谢。尝试在表单中实现
onSubmit
-方法,而不是在按钮中。好主意,从未想过。不过,这并没有解决问题。但在伯尼的暗示下,我找到了解决办法。谢谢。感谢您解释异常的实际用法。我曾在这样的背景下看到它的使用,并认为它的使用范围更广。但我想我所做的是虐待。因此,我停止使用异常,只是将当前页面作为参数传递给注册页面,然后根据建议使用该页面设置响应页面。非常感谢。感谢您解释异常的实际使用。我曾在这样的背景下看到它的使用,并认为它的使用范围更广。但我想我所做的是虐待。因此,我停止使用异常,只是将当前页面作为参数传递给注册页面,然后根据建议使用该页面设置响应页面。非常感谢。
add(new Link<String>("signin") {
   @Override
   public void onClick() {
       setResponsePage(getPage());
       throw new RestartResponseAtInterceptPageException(SignIn.class);
   }
});