我是 Grails 的新手,我正在努力解决许多简单的问题。
例如,当我从页面顶部布局上显示的模板视图登录/注销时,我尚未找到返回上次访问页面的正确方法。
我解决此问题的最后一次尝试是将 ${params.controller} 和 ${params.action} 保存在发送到注销操作的参数中,然后重定向。好吧……即使这样也失败了。
这是 gsp 片段:
<g:link controller="user" action="logout" params="[currentController: ${params.controller}, currentAction: ${params.action}]">Logout</g:link>
最后一行代码抛出以下异常:
ERROR errors.GrailsExceptionResolver - Error evaluating expression [[currentController: ${params.controller}, currentAction: ${params.action}]]
所以我的问题是:
1 - 如何在登录/注销操作后重新加载上次访问的页面?
2 - 为什么上面的代码出现异常?
谢谢
编辑 :
关于问题#2,以下代码似乎有效:
<g:link controller="user" action="logout" params="[currentController: params.controller, currentAction: params.action]">Logout</g:link>
但我实在不明白其中的原因...
编辑2:
我还找到了重定向到上次访问页面的解决方案:
redirect(url: request.header('referer'))
但不幸的是,在登录后执行此操作时,我的页面中呈现的内容是重复的。有什么想法或其他安全的解决方案吗?