登录提交按钮:
if(loginAllowed)
{
if (!continueToOriginalDestination())
{
setResponsePage(General.class);
}
}
常规页面注销按钮:
getWicketWebSession().invalidateNow();
getRequestCycle().setRedirect(true);
setResponsePage(LogIn.class);
用户在会话中时效果很好。但是当会话到期并且用户点击“注销”时 - 我们在PageMap中保存“general?wicket:interface =:1:logout :: ILinkListener ::”,当用户登录时 - 我们得到例外:
wicket.RequestCycle | org.apache.wicket.WicketRuntimeException:
component logout not found on page LogIn[id = 1],
listener interface = [RequestListenerInterface name=ILinkListener,
method=public abstract void
org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()
但我仍然需要重定向用户,并且无法删除continueToOriginalDestination()。 你能给我一些建议吗?
答案 0 :(得分:0)
[删除原始答案]
我无法使用Wicket 6使用最小测试应用程序重现您的问题。也许您使用的是其他版本?
无论哪种方式,您需要做的是创建一个新的LogoutPage,它只是注销用户并在构造函数中重定向他。然后,将您的注销按钮更改为该页面的BookmarkablePageLink
。该链接无法过期,因为它可以收藏。
使用注销页面而不是在链接处理程序中注销是更好的做法IMO,因为:
RestartResponseAtInterceptPageException
的路线似乎违反直觉。