在 Grails 控制器中重定向
Posted
技术标签:
【中文标题】在 Grails 控制器中重定向【英文标题】:redirect in Grails controller 【发布时间】:2015-02-20 14:44:57 【问题描述】:我是 Grails 新手,我使用的是 Grails 版本 2.3.4,在我的应用程序中我有 2 个控制器
应用用户
和
管理许可证
,在 AppUsers 中有一个名为 auth 的方法,其代码如下:
def auth()
if (!params.username.empty)
redirect (controller: "manageLicences" , action:"checkLicense")
在 ManageLicense 控制器的 checkLicense 中,我根据某些条件进行一些重定向
def checkLicense
if (someCondition)
redirect (controller:'manageLicences' , action:'list')
else
redirect (controller:'appUsers' , action:'login' )
,问题是当我的应用程序到达时
redirect (controller: "manageLicences" , action:"checkLicense")
在 AppUsers 控制器中,而不是转到 checkLicense 中的重定向,浏览器中的 URL 将是
http://localhost:8080/MyApplication/manageLicences/checkLicense
和空白页,有什么建议吗?
【问题讨论】:
有什么建议或建议吗? 确保在每次redirect
调用后都有一个return
声明。
在“if”之前和之后添加一些登录信息以查看发生了什么。
我添加了“返回”,但什么也没发生
还有其他建议吗?
【参考方案1】:
检查您没有从命名空间控制器重定向到不在命名空间中的控制器。
根据Grails Documentation:
将当前操作重定向到另一个操作,可选地传递参数和/或错误。当从命名空间控制器发出重定向时,目标控制器的命名空间隐含为启动重定向的控制器的命名空间。要从命名空间控制器发出重定向到不在命名空间中的控制器,必须使用 null 值显式指定命名空间,如下所示。
class SomeController
static namespace = 'someNamespace'
def index()
// issue a redirect to PersonController which does not define a namespace
redirect action: 'list', controller: 'person', namespace: null
【讨论】:
【参考方案2】:def checkLicense
if (someCondition)
redirect (controller:'manageLicences' , action:'list')
return
else
redirect (controller:'appUsers' , action:'login' )
return
【讨论】:
以上是关于在 Grails 控制器中重定向的主要内容,如果未能解决你的问题,请参考以下文章