(Quick Reference)

redirect

Purpose

To redirect flow from one action to the next using an HTTP redirect.

Examples

redirect(action: "show")

redirect(controller: "book", action: "list")

redirect(controller: "book", action: "list", namespace: "publishing")

redirect(controller: "book", action: "list", plugin: "publishingUtils")

redirect(action: "show", id: 4, params: [author: "Stephen King"])

redirect(controller: "book", action: "show", fragment: "profile")

redirect(uri: "book/list")

redirect(url: "http://www.blogjava.net/BlueSUN")

redirect(Book.get(1))

Description

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

Parameters

redirect(Map params)

  • action (optional) - the name of the action to use in the link, if not specified the default action will be linked

  • controller (optional) - the name of the controller to use in the link, if not specified the current controller will be linked

  • namespace (optional) - the namespace of the controller to redirect to

  • plugin (optional) - the name of the plugin which provides the controller

  • id (optional) - the id to use in the link

  • fragment (optional) - The link fragment (often called anchor tag) to use

  • mapping (optional) - The named URL mapping to use to rewrite the link

  • params (optional) - a map containing request parameters

  • url (optional) - a map containing the action, controller, id etc.

  • absolute (optional) - If true (default) will prefix the link target address with the value of the grails.serverURL property from application.yml, or http://localhost:<port>; if there is no value in application.yml and not running in the production environment. If false a partial URI is generated for the Location header.

  • base (optional) - Sets the prefix to be added to the link target address, typically an absolute server URL. This overrides the behaviour of the absolute property if both are specified.

  • permanent (optional) - If true the redirect will be issued with a 301 HTTP status code (permanently moved), otherwise a 302 HTTP status code will be issued

Domain Class

redirect(Object domainClass)

A special case is if a domain class is passed into redirect it will use the LinkGenerator to create the URL. For example redirect(Book.get(1)) will generate a redirect to /book/show/1.