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))
重新導向
目的
使用 HTTP 重新導向,將流程從一個動作重新導向到下一個動作。
範例
說明
將目前的動作重新導向到另一個動作,選擇性地傳遞參數和/或錯誤。當從命名空間控制器發出重新導向時,目標控制器的命名空間暗示為發起重新導向的控制器。若要從命名空間控制器發出重新導向到不在命名空間中的控制器,必須使用 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.yml
中grails.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
。