我知道使用 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/