I am a newbie in Grails and I am struggling with many simple issues.
For instance, I haven't managed to find a proper way to go back to the last visited page when I login/logout from a template view that is displayed on the top layout of the page.
My last attempt at solving this problem was to save the ${params.controller} and ${params.action} in the parameters sent to the logout action and redirect thereafter. Well...even this failed. Here is the gsp snippet:
<g:link controller="user" action="logout" params="[currentController: ${params.controller}, currentAction: ${params.action}]">Logout</g:link>
This last code line throws the following exception:
ERROR errors.GrailsExceptionResolver - Error evaluating expression [[currentController: ${params.controller}, currentAction: ${params.action}]]
So my questions are:
1 - How can I reload the last visited page after a login/logout action ?
2 - Why do I have an exception from my code above?
Thank You
EDIT : Concerning question #2, it seems that the following code is working:
<g:link controller="user" action="logout" params="[currentController: params.controller, currentAction: params.action]">Logout</g:link>
But I don't really understand the reason...
EDIT2 : I have also found out a solution for redirecting to the last visited page:
redirect(url: request.header('referer'))
But unfortunately when doing this after login, the contents rendered in my page are duplicated. Any idea or any other safe solution?
I'm using this controller-side:
redirect(uri: request.getHeader('referer') )