【问题标题】:redirect in Grails controller在 Grails 控制器中重定向
【发布时间】: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”之前和之后添加一些登录信息以查看发生了什么。
  • 我添加了“返回”,但什么也没发生
  • 还有其他建议吗?

标签: grails grails-controller


【解决方案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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-04-30
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多