在Grails控制器中重定向

时间:2014-12-22 13:32:55

标签: grails grails-controller

我是Grails的新手,我正在使用Grails版本2.3.4,在我的应用程序中我有2个控制器

  

APPUSER

  

ManageLicences

,在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

和空白页,有什么建议吗?

2 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分:0)

def checkLicense {
    if (someCondition) {
        redirect (controller:'manageLicences' , action:'list')
        return
    } else {
        redirect  (controller:'appUsers' , action:'login' )
        return
    }
}