2011-09-27 59 views
0

我剛開始使用Grails,從JavascriptGrails的基礎知識:日期,字符串和對象屬性

轉變在控制器,我想下面這樣做,但我得到一個錯誤

def list = { 
    def projects = Project.list() 

    projects.each { 
    it.dateCreated = it.dateCreated.format('mm/dd') 
    println it.dateCreated 
    } 
    return [projectInstanceList: projects, 
      projectInstanceTotal: projects.size()] 
} 

在我看來,我然後顯示一個項目的dateCreated,我只是想格式化日期,所以它更乾淨/更簡潔。

這是我的錯誤:

'java.lang.String' to class 'java.util.Date' 

我還試圖賦予這it.dateCreated

new Date(2011, 09, 31, 10, 57, 00) 

但是,這給了一個類似的錯誤也。

回答

2

首先,你應該永遠不會改變域實例屬性一樣,只是爲了「展示」的目的。原因在於,當hibernate會話刷新時,域實例實際上將隨着您的更改而持久化。

其次,讓視圖以正確的格式顯示屬性。這是視圖的責任,而不是域實例或控制器。

+0

所以在視圖中我將如何操縱這個字符串$ {project.dateCreated}? JavaScript的? –

+1

取決於你如何顯示它。你不應該僅僅通過格式化輸出來操作它。例如,如果您正在迭代項目列表(並且當前項目的變量稱爲項目),則可以執行$ {project.dateCreated.format('mm/dd')}。您可能需要調查Grails文檔以瞭解使用標記對各種格式進行格式化的各種方法。 –

+0

這就是我最終做的 –

0

it.dateCreatedjava.util.Date。當你這樣做時:it.dateCreated.format('mm/dd')你正在格式化日期,但返回java.lang.String。然後,您嘗試將String指定給it.dateCreated,但它不能接受,因爲它是日期。

儘量只:println it.dateCreated.format('mm/dd')

1

Date.format(...)返回字符串(see the documentation)。您不能將java.lang.String分配給java.util.Date

要麼println it.dateCreated.format('mm/dd')要麼使用Grails' formatDate tag在您的視圖中進行渲染。