(快速参考)

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']

chain 方法需要一个重定向的 URI 控制器/动作/id 名称组合