2012-08-07 24 views
0

我是Grails的新手,並使用古老版本的Grails(1.3.6/8)。我有一個對象,其中有一些變量沒有保留我分配給它們的東西。Grails 1.3.6 - 對象字段似乎失去了價值

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特有的可見性問題,但我不能指望它。

任何幫助,非常感謝!

+0

什麼是「嘗試」塊?它是否存在某種行動/方法? 'println someGrid.longDate'和'doSomeWork(someGrid)'之間有什麼? – 2012-08-08 13:33:22

回答

0

如果doSomeWork本身並不需要一個控制器動作,我想使它成爲一個正常的方法,而不是一個封閉:

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

有了它作爲一個封閉的是,Grails可以治療SomeGrid參數作爲一個命令對象並試圖直接從params數據綁定它。

+0

這不應該發生在直接調用中... – 2012-08-08 13:32:15