2012-10-08 1 views
4

Je travaille sur un projet où la session utilisateur va être remplacée en cliquant sur un lien. Puisque toutes les données de la page d'en-tête, du pied de page et du contenu (c'est-à-dire la page entière) dépendent des données de session, la page entière (toutes les sous-pages) doit être rechargée. J'ai essayé bookmarkablepagelink, mais je ne peux pas mettre une action (en changeant la session) sur ce lien. J'ai aussi essayé de faire un lien qui change la session et ensuite clique sur le bookmarkablepagelink par programme, mais je ne peux pas trouver un moyen de cliquer sur le lien sans javascript (et ce n'est pas une alternative dans ce projet).Actualiser la page entière

Toutes les bonnes suggestions comment faire cela?

+1

Bienvenue dans Stack Overflow! Nous vous encourageons à [rechercher vos questions] (http://stackoverflow.com/questions/how-to-ask). Si vous avez [déjà essayé quelque chose] (http://whathaveyoutried.com/), veuillez l'ajouter à la question - sinon, recherchez et tentez d'abord votre question, puis revenez. –

Répondre

5

Dans la méthode onClick pour le lien, faire la remise à zéro de la session, puis

setResponsePage(getPage()); 

et la page devrait rafraîchir bien.

+0

Ceci n'est pas nécessaire: le paramètre par défaut de Wicket est de rerender la page en cours sauf si explicitement indiqué par setResponsePage (otherpage). –

+0

Si c'est un lien ajax? –

+0

C'est vrai, pour les liens Ajax qui font l'affaire. –

5

La solution à votre problème est double: remplacer la session, probablement mieux fait par

getSession().invalidateNow(); 

et l'envoi d'une redirection vers une URL bookmarkable. Cela peut être fait avec setResponsePage ainsi:

setResponsePage(OtherPage.class, new PageParameters().add("foo", "bar")); 

Ceci enverra une redirection 302 au navigateur avec l'URL bookmarkable et a fourni des paramètres, donnant le conteneur de servlets amplement l'occasion de réinitialiser la session (essentiellement déconnecter l'utilisateur), alors que en attente du navigateur pour répondre. Il déclenchera également un nouveau cookie de session (car la session précédente n'est plus active).

Questions connexes