(快速參考)

chain

目的

使用 flash.html[flash] 儲存空間,在 HTTP 從一個動作重新導向到另一個動作後,隱式保留模型。

範例

def shawshankRedemption = new Book(title: 'The Shawshank Redemption')
chain(action: "details", model: [book: shawshankRedemption])

說明

用法

chain(controller*, action, id*, model, params*)

引數

  • uri - 要重新導向到的完整 uri(例如 /book/list、book/show/2)

  • controller(選用) - 要重新導向到的控制器;如果未指定,預設為目前的控制器

  • namespace(選用) - 要鏈接到的控制器的命名空間

  • action - 要重新導向到的動作,可以是字串名稱或目前控制器中動作的參考

  • id(選用) - 重新導向中要使用的 id

  • model - 要鏈接到下一個動作的模型

  • params(選用) - 要傳遞給鏈接到動作的參數。

chain 方法將傳遞的模型儲存在 flash 範圍中,然後執行 HTTP 重新導向。然後,模型會在下次要求時還原。最終傳遞給檢視的模型會從傳遞給 chain 方法的模型開始建立,然後將下一個動作傳回的模型中的所有資料都新增到該模型,這可能會取代原本傳遞給 chain 方法的模型中的一些資料。例如

def one() {
    chain action: 'two', model: [name: 'Tony', town: 'Birmingham']
}

def two() {
    [name: 'Anthony', country: 'England']
}

如果將要求傳送給 one 動作,該動作會鏈接到 two 動作,後者會傳回模型。傳遞給檢視的模型會包含 [name: 'Anthony', town: 'Birmingham', country: 'England']

鏈條方法需要一個 URI 來重新導向一個控制器/動作/id 名稱組合