[ https://issues.apache.org/jira/browse/WICKET-5661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14088722#comment-14088722 ]
Hendy Irawan commented on WICKET-5661: -------------------------------------- Thank you for the tip :) > IRequestHandler implementation for RestartResponseAtInterceptPageException > -------------------------------------------------------------------------- > > Key: WICKET-5661 > URL: https://issues.apache.org/jira/browse/WICKET-5661 > Project: Wicket > Issue Type: Improvement > Components: wicket > Affects Versions: 6.16.0 > Reporter: Hendy Irawan > Priority: Minor > > I'd like to throw e.g. {{NotLoggedInException}} which will be handled by > {{onException}} which then does a {{RestartResponseAtInterceptPage}}: > {code} > private final class NotLoggedInRequestCycleListener extends > AbstractRequestCycleListener { > @Override > public IRequestHandler onException(RequestCycle cycle, Exception ex) { > // Since our actual exception is wrapped, we need to find based > on the chain > final List<Throwable> chain = Throwables.getCausalChain(ex); > final NotLoggedInException notLoggedInException = > Iterables.getFirst( > Iterables.filter(chain, > NotLoggedInException.class), null); > if (notLoggedInException != null) { > final Url url = cycle.getRequest().getClientUrl(); > log.debug("Got exception " + > notLoggedInException.getClass().getName() + " on " + url, ex); > final SoluvasWebSession session = (SoluvasWebSession) > Session.get(); > session.setOriginalUrl(url); > session.info("Please log in"); > session.dirty(); > throw new > RestartResponseAtInterceptPageException(DedicatedLoginPage.class); > } else { > return super.onException(cycle, ex); > } > } > } > {code} > which doesn't work: > {code} > Caused by: javax.servlet.ServletException: Cannot process filter: > org.apache.wicket.RestartResponseAtInterceptPageException > at > org.soluvas.web.site.SecuredWicketAtmosphereHandler$CustomFilterChain.doFilter(SecuredWicketAtmosphereHandler.java:201) > at > org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) > at > org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) > at > org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) > at > org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) > at > org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) > at > org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) > at > org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) > at > org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) > at > org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) > at > org.soluvas.web.site.SecuredWicketAtmosphereHandler$CustomFilterChain.doFilter(SecuredWicketAtmosphereHandler.java:199) > ... 25 more > Caused by: org.apache.wicket.RestartResponseAtInterceptPageException > {code} > because Wicket requires an {{IRequestHandler}} instead in this phase. -- This message was sent by Atlassian JIRA (v6.2#6252)