Olá, galera.
Estou iniciando um trabalho com desenvolvimento de projetos com Apache Wicket 1.5. A principio, estou fazendo alguns testes e recorrendo as documentações da apache, porém, me deparei com um erro aonde não consegui ainda encontrar a solução. O que acontece:
Eu estou usando páginas interceptoras. Quando estou fazendo o checkout do meu carrinho de compras, redireciono para uma tela de login (se o usuário não estiver logado no sistema). Após o login, o sistema deve retornar à página anterior de Checkout. O método foi implementado como descrito na documentação do Apache Wicket site (https://cwiki.apache.org/WICKET/using-intercept-pages.html), porém, tenho tido alguns problemas. segue o exemplo:
[b][color=red]// Esta página deve ser redirecionada para a página interceptadora[/color]
[color=violet]public class Checkout extends WebPage {
User loggedInUser = session.getLoggedInUser();
if (loggedInUser == null) {
redirectToInterceptPage(new Login(params));
}
} [/color]
[color=violet]public class Login extends WebPage { [/color]
[color=red]// Método deveria retornar true e redirecionar para a página de Checkout[/color]
[color=violet]if (!continueToOriginalDestination()) {
setResponsePage(ShowCatalog.class);
}
}[/color][/b]
Resultado: O método não retorna verdadeiro (seria o ideal no meu ponto de vista) e lança uma exceção ReplaceHandlerException, e não faz o redirecionamento para a página de Checkout. Como posso resolver este problema?
Sei que se eu tratar esta exceção, no catch, eu posso forçar o redirecionamento para a página de checkout conforme exemplo abaixo:
[b]try {
if (!continueToOriginalDestination()) {
setResponsePage(ShowCatalog.class);
}
} catch (ReplaceHandlerException e){
setResponsePage(Checkout.class);
}[/b]
O problema desta solução é que não há nenhuma garantia de que irei chamar a página interceptadora sempre a partir da página Checkout. (fica muito amarrado, no meu ponto de vista).
Se alguém já tiver tido este problema e conseguir me ajudar, eu agradeço.
Obrigada.