据我所知,使用bootstrap.groovy和控制器的标准方法是创建数据并将它们保存到引导程序init()中的数据库() 控制器可以读取数据,所以两者之间的“中间人”就是数据库。grails从bootstrap.groovy填充控制器模型没有数据库支持
但是,如果我想在bootstrap.groovy中创建数据而不将它们保存到数据库中(假设这些数据不需要保存),如何将数据注入控制器以便它们可以用于视图渲染?
让我们与域类Book一个简单的例子。只需在引导我只想克里特岛的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的。 我该怎么做?我无法找到一个简单的方法或答案这个
这听起来像一个可能的解决方案,但后来我将承担服务实例可用(已初始化)控制器内,而不是BootStrap.groovy中。这可能是确定的,如果您需要调用服务中的轻量级方法,但如果我需要,做I/O操作(读在这种情况下JSON文件)服务中调用一个方法,我觉得像引导的地方。 groovy是最好的地方(在应用程序启动时),一旦数据被缓存,服务和控制器就可以开始使用它们 –
解决你的问题有很多正确的方法,当然这取决于你。这取决于你如何去做,至少对我而言都是正确的。你也可以检查的服务,如果该数据已经被加载(需求),如果没有加载数据,并将其保存在内存中。 – quindimildev