Apache Wicket 1.5-método continueToOriginalDestination() lança exceção ReplaceHandlerException

0 respostas
pri.carvalho86

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.

Criado 29 de maio de 2012
Respostas 0
Participantes 1