0

我是 Grails 的新手,使用的是旧版本的 Grails (1.3.6/8)。我有一个带有一些变量的对象,这些变量没有保留我分配给它们的东西。

class NiftyController {

    try
    {
        SomeGrid someGrid = new SomeGrid()
        def selectedDate = params.specifiedDate
        ...
        someGrid.selectedDate = selectedDate
        someGrid.longDate = Calendar.getInstance().getTimeInMillis()
        println someGrid.selectedDate // prints, say, 08/06/2012
        println someGrid.longDate // prints, say, 1302558890256
        ....
        doSomeWork(someGrid)
    }


    def doSomeWork = { SomeGrid someGrid ->
        println someGrid.selectedDate // prints '' (empty)
        println someGrid.longDate // prints 8 - the number for the current month.
    }
}

我完全摸不着头脑——我使用 Java,这种类型的分配变量数据丢失是新的,对我来说根本没有意义。谁能弄清楚这里发生了什么?我猜这是 Grails 独有的某种可见性问题,但我无法确定。

任何帮助是极大的赞赏!

4

1 回答 1

0

如果doSomeWork它本身不需要是控制器动作,我会将其设为普通方法而不是闭包:

private doSomeWork(SomeGrid someGrid) {
  //...
}

将其作为闭包,Grails 可能会将SomeGrid参数视为命令对象并尝​​试直接从params.

于 2012-08-07T19:34:29.623 回答