(快速参考)

重定向

目的

使用 HTTP 重定向从一个操作流程重定向到下一个操作流程。

示例

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

描述

将当前操作流程重定向到另一个操作流程,还可以选择传递参数和/或错误。从命名空间控制器发出重定向时,目标控制器的命名空间暗示是发起重定向的控制器的命名空间。若要从命名空间控制器发出重定向到不在命名空间中的控制器,命名空间必须明确指定为 `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
    }
}

参数

redirect(Map params)

  • action (可选) - 链接中要使用的操作名称,如果未指定,将会链接到默认操作

  • controller (可选) - 链接中要使用的控制器名称,如果未指定,将会链接到当前控制器

  • namespace (可选) - 要重定向到的控制器的命名空间

  • plugin (可选) - 提供控制器的插件名称

  • id (可选) - 链接中要使用的 ID

  • fragment (可选) - 要使用的链接片段(通常称为锚标记)

  • mapping (可选) - 要用于重写链接的已命名的 URL 映射

  • params (可选) - 包含请求参数的映射

  • url (可选) - 包含操作、控制器、ID 等的映射

  • absolute (可选) - 如果为 true(默认值),将使用来自 application.ymlgrails.serverURL 属性值或在不在生产环境中运行时使用 http://localhost:<port> 为链接目标地址加上前缀。如果 application.yml 中无值,将针对 Location 标头生成部分 URI。

  • base (可选) - 设置将添加到链接目标地址的前缀,通常是一个绝对服务器 URL。如果同时指定了 absolute 属性,则该属性将覆盖 absolute 属性的行为。

  • permanent (可选) - 如果为 true,则重定向将使用 301 HTTP 状态代码(永久移动)发出,否则将发出 302 HTTP 状态代码

域类

redirect(Object domainClass)

一种特殊情况是如果将域类传递到 redirect,它将使用 LinkGenerator 来创建 URL。例如,redirect(Book.get(1)) 将生成到 /book/show/1 的重定向。