Comment faire pour rediriger à la dernière page visitée dans Graal application?
Je suis un newbie dans Graal et je suis aux prises avec de nombreux problèmes simples.
Par exemple, je n'ai pas réussi à trouver un bon moyen de revenir à la dernière page consultée, quand j'connexion/déconnexion à partir d'un template de vue qui est affiché en haut à disposition de la page.
Ma dernière tentative de résolution de ce problème est d'enregistrer le ${params.contrôleur} et ${params.action} dans les paramètres envoyés à la déconnexion de l'action et de rediriger par la suite. Eh bien...même cela n'a pas.
Voici le spg extrait de:
<g:link controller="user" action="logout" params="[currentController: ${params.controller}, currentAction: ${params.action}]">Logout</g:link>
Cette dernière ligne de code lève l'exception suivante:
ERROR errors.GrailsExceptionResolver - Error evaluating expression [[currentController: ${params.controller}, currentAction: ${params.action}]]
Donc mes questions sont:
1 - Comment puis-je recharger la dernière page visitée après la connexion/déconnexion d'action ?
2 - Pourquoi ai-je une exception à partir de mon code ci-dessus?
Merci
EDIT :
Concernant la question #2, il semble que le code suivant fonctionne:
<g:link controller="user" action="logout" params="[currentController: params.controller, currentAction: params.action]">Logout</g:link>
Mais je ne comprends pas vraiment la raison...
EDIT2 :
J'ai aussi trouvé une solution pour rediriger vers la dernière page visitée:
redirect(url: request.header('referer'))
Mais, malheureusement, quand vous faites cela, après la connexion, le contenu rendu dans ma page sont dupliqués. Toute idée ou toute autre solution de sécurité?
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple de rediriger à la dernière page, est d'utiliser l'URI directement:
(
request.forwardURI
est l'URL complète de la page affichée dans le navigateur, alors querequest.contextPath
est l'URL de la partie représentant le contexte de l'application, par exemple. "http://localhost:8080/yourApp" - ainsi, le résultat de la suppression du chemin de contexte de l'URI est l'app-URI relatif, par exemple. "/mycontroller/myaction")Dans votre déconnexion action, simplement rediriger vers cette URI:
Autant que je sache, à l'aide du référent n'est pas entièrement sûr, parce que cela dépend de l'agent utilisateur (navigateur) pour ajouter le référent en-tête HTTP (qui peut avoir été désactivée).
À votre 2ème question: Graal interprète automatiquement liste ou sur la carte des valeurs d'attribut dans GSPs comme Groovy expressions. Donc, ce
est équivalent à
et l'emballage des pièces de cette expression à nouveau dans
${...}
semble confondre le SPG compilateur.Espère que cette aide.
J'utilise ce contrôleur de côté:
Dans le SPG vue de fichier que vous pouvez utiliser en tant que tel.
Une autre alternative est de construire l'url avec createLink en utilisant le courant: actionName, controllerName et params.
Cela va créer une url absolue, en raison de la
absolute:true
.