(快速參考)

重新導向

目的

使用 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 屬性的值或 https://127.0.0.1:<port> 為連結目標位址加上前置詞;如果 application.yml 中沒有值且未在製作環境中執行。如果為 false,將為 Location 標頭產生部分 URI。

  • base(選用) - 設定要新增到連結目標網址的前置字元,通常是絕對伺服器 URL。如果同時指定 absolute 屬性,此設定會覆寫其行為。

  • permanent(選用) - 如果為 true,重新導向會發出 301 HTTP 狀態碼(永久搬移),否則會發出 302 HTTP 狀態碼

Domain Class

redirect(Object domainClass)

如果將 domain class 傳遞到 redirect 中,會使用 LinkGenerator 來建立 URL。例如 redirect(Book.get(1)) 會產生重新導向到 /book/show/1