redirect in Grails controller

SShehab picture SShehab · Dec 22, 2014 · Viewed 12.1k times · Source

I'm new to Grails , i'm using Grails version 2.3.4 , in my application i have 2 controllers

AppUser

and

ManageLicences

, in the AppUsers there is a method named auth and below its code :

def auth()
{
    if (!params.username.empty)
    {
  redirect  (controller: "manageLicences" , action:"checkLicense")
     }
}

In the checkLicense in the ManageLicense controller i'm doing some redirects depending on some conditions

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

        }
}

, the problem is that when my application reaches

 redirect  (controller: "manageLicences" , action:"checkLicense")

in the AppUsers controller , rather going to the redirect that in checkLicense , the URL in the browser will be

http://localhost:8080/MyApplication/manageLicences/checkLicense

and blank page , any advice ?

Answer

Tomasz Janek picture Tomasz Janek · Jan 17, 2015

Check that you're not doing redirect from a namespaced controller to a controller that is not in a namespace.

According to Grails Documentation:

Redirects the current action to another action, optionally passing parameters and/or errors. When issuing a redirect from a namespaced controller, the namespace for the target controller is implied to be that of the controller initiating the redirect. To issue a redirect from a namespaced controller to a controller that is not in a namespace, the namespace must be explicitly specified with a value of null as shown below.

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
    }
}