在grails控制台中加载和使用夹具

时间:2013-05-08 08:54:50

标签: grails console fixtures

我通过grails控制台而不是BootStrap执行以下代码:

class BootStrap {
def fixtureLoader

    def init = { servletContext ->
        fixtureLoader.load("MockRecords")


    }

}

我收到以下错误:

java.lang.NullPointerException: Cannot invoke method load() on null object
    at Script1.run(Script1.groovy:16)
    at org.grails.plugins.console.ConsoleService.eval(ConsoleService.groovy:57)
    at org.grails.plugins.console.ConsoleService.eval(ConsoleService.groovy:37)
    at org.grails.plugins.console.ConsoleController$_closure2.doCall(ConsoleController.groovy:61)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:679)
undefined

如何使用控制台加载灯具

2 个答案:

答案 0 :(得分:2)

更简单, 不使用getBean:

ctx.fixtureLoader.load("MockRecords")

它有效。

答案 1 :(得分:0)

DI(依赖注入)通过模式CoC在grails中自动完成。

因此,如果您复制/粘贴代码,控制台将不会注入依赖项。所以必须通过调用foctory ctx.getBean手动注入('')

def fixtureLoader=ctx.getBean('fixtureLoader');

fixtureLoader.load("MockRecords")