Wicket: comment faire pour rediriger vers une autre page?
Comment puis-je rediriger vers une autre page à l'aide de Guichet? IIRC, une exception doit être levée dans le constructeur, mais je ne me rappelle plus laquelle. Merci à l'avance.
Vous devez vous connecter pour publier un commentaire.
Jeter un
RestartResponseAtInterceptPageException
va le faire, comme vous l'avez noté dans votre propre réponse, mais c'est vraiment une partie d'un système permettant à une redirection avec une éventuelle continuation à la page en cours (souvent partie d'un processus d'autorisation). Si ce n'est pas votre situation, mais vous avez toujours à faire quelque chose que les interruptions de traitement, il peut être préférable de jeter unRestartResponseException
.L'usage principal que je connais pour
RestartResponseAtInterceptPageException
est dans le "rediriger vers la page de connexion de processus". Si vous utilisez l'authentification basée sur les rôles, de mise en œuvre deIAuthorizationStrategy
sur la détermination que vous n'êtes pas connecté en donnera le signal configuréIUnauthorizedComponentInstantiationListener
, typiquement leAuthenticatedWebApplication
qui rejette cette exception, si vous n'êtes pas connecté, avec une redirection vers un configuré la page de connexion. (Si vous êtes connecté, mais non autorisée, quelque chose se passe...).Le réel de redirection est effectuée par le
PageMap
, qui dans ce cas aussi, se souvient de la page à laquelle vous essayez d'aller. Après une connexion réussie, la page de connexion peut demander de vous envoyer à la page que vous étiez en train de l'origine en appelantcontinueToOriginalDestination()
, qui est une méthodeComponent
et récupère le rappeler à la page de laPageMap
.Il y a du bon exemple de code pour le processus d'authentification, mais l'exception et intercepter se cachent derrière les scènes un peu.
Rediriger vers un guichet de la page, à l'aide d'un client de redirection HTTP 302, l'URL du navigateur changements):
Rediriger vers un guichet de la page, à l'aide d'un serveur de redirection /vers l'avant (l'URL du navigateur reste inchangée):
Depuis Guichet 1.5RC5.1:
Avant De Guichet 1.5RC5.1:
Rediriger vers une URL, en utilisant HTTP 302 ("Déplacé Temporairement"):
Rediriger vers une URL, en utilisant HTTP 301 ("moved permanently", SEO friendly):
Une recherche rapide pour toutes les
*Exception.java
fichiers dans wicket l'a révélé. On a qu'à jeter unRestartResponseAtInterceptPageException
:Je viens de trouver
qui travaille au moins à guichet à 6. Il fonctionne côté serveur et réécrit l'URL de trop. C'est peut-être un peu plus rapide que d'utiliser une exception.
vous pouvez utiliser
setResponsePage(nouveau RedirectPage("/"));
ou
setResponsePage(HomePage.class);
ou
throw new RestartResponseException(HomePage.class);