grails 在没有数据库支持的情况下从 bootstrap.groovy 填充 Controller 模型

标签 grails grails-controller

我知道使用 bootstrap.groovy 和 Controller 的标准方法是创建数据并将它们保存到 bootstrap init() 中的数据库
Controller 然后可以读取数据,因此两者之间的“中间人”就是数据库。

但是,如果我想在 bootstrap.groovy 中创建数据而不是将它们保存在数据库中(假设这些数据不需要保存),我如何将数据注入(inject) Controller 以便它们可以用于 View 渲染?

让我们以域类 Book 为例。简单地在 Bootstrap 中,我只想创建一个包含 100 本书的虚拟列表:

class BootStrap {

    def grailsApplication

    def List<Book> books

    def init = { servletContext ->
        books = new ArrayList<>()

        for (int i=0; i<100; i++) {
            books.add(new Book(numPages: 20))
        }

    }

    def destroy = {
    }
}

现在的目标是向 BookController 公开/注入(inject)他的书籍列表。
我该怎么做?我在任何地方都找不到简单的方法或答案

最佳答案

默认情况下,服务在 Grails 中是单例的,因此您可以将这些数据存储在服务中。但是你必须小心,因为一个服务可以同时使用。

https://docs.grails.org/latest/guide/services.html

关于grails 在没有数据库支持的情况下从 bootstrap.groovy 填充 Controller 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43534264/

相关文章:

grails - Grails文件上传未使用正确的内容类型

grails - 如何将数据从一个grails应用程序发送到另一grails应用程序

forms - grails 操作提交 url

grails - Postgresql和Grails 3.3.8的默认字符串大小似乎为20个字符

grails - 如何将值从 Controller 传递到gsp页面

grails - 如何在每个测试中更改类的metaClass

grails - 将CommonsMultipartFile转换为文件

grails - 在多个表单/ Action 之间重用单个CommandObject实例的优点/缺点?

grails - Grails Controller 映射,完全误解

grails - 如何将OpenID集成到我的项目中?