gpt4 book ai didi

Grails 渲染 v 响应 - 将数据传递给 Controller ​​的约定

转载 作者:行者123 更新时间:2023-12-02 13:46:41 24 4
gpt4 key购买 nike

尽管阅读了文档,但我发现一些用于将数据从 Controller 传递到 View 的 Grails 约定有点不透明。几个基本问​​题:

以下是一些问题:

1) 在为“人” Controller 创建的脚手架中,索引操作以

respond Person.list(params) model:[personCount: Person.count()]

在 index.gsp 中,使用以下命令将列表呈现给浏览器:
<f:table collection="${personList}" />

我的问题是,这个 personList 变量从何而来?或者换句话说, Controller 中 Person.list(...) 的输出是如何以名称 personList 显示在 View 中的?是否有一个通用的规则,如果你打电话
respond foo

和 foo 是一个列表,然后它会以名称“fooList”显示在 Controller 中?

2)如果你可以通过说“render foo”向 Controller 提供一个对象,那么模型参数的目的是什么?即之间有什么区别
respond foo


respond model:[foo: foo]

似乎可以使用 "${foo}" 在 View 中访问两者

3)最后,对“响应”和“渲染”之间的区别的简要描述是什么?它们似乎都将数据从 Controller 传递到 View 。

最佳答案

因此,文档很好地解释了 respondrender并指出两者的区别。具体你问的问题。

但是,无论如何我都会在这里回答他们:

  • 使用时 respond它将尝试根据类型确定适当的模型变量名称。所以对于你的例子,因为 Person.list()返回 List模型变量变为 personList在你的另一个例子中,如果 fooList它确实变成了 fooList .这在关于 respond 的文档中进行了解释。 (有具体例子)。
  • respondrender不同之处在于 respond尝试根据 accept 使用最合适的模型进行回复 header (或文件扩展名)。如 render无论 accept 如何,您都可以通过更具体的控制来呈现响应。 header (或文件扩展名)。这在文档中对两者的描述中也很清楚。
  • 简洁差异的描述可以在两者的描述中找到respondrender (来自文档):

  • Respond: Attempts to return the most appropriate type for the requested content type (specified by either the Accept header or file extension)





    Render: To render different forms of responses from simple text responses, to view and templates.



    简单地说:“当您想要支持多种类型的响应类型并遵循 Grails 约定时,请使用 respond,而当您想要更具体地控制响应类型时,请使用 render

    关于Grails 渲染 v 响应 - 将数据传递给 Controller ​​的约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40835745/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com