Grails basics:dates, strings, and object properties
I'm just starting out with Grails, transitioning from Javascript
In a controller, I'm trying to do this below, but I get an error
def list = {
def projects = Project.list()
projects.each {
it.dateCreated = it.dateCreated.format('mm/dd')
println it.dateCreated
}
return [projectInstanceList: projects,
projectInstanceTotal: projects.size()]
}
In my view I then display the dateCreated for a project, I just want to format the date so it's cleaner/more concise.
This is my error:
'java.lang.String' to class 'java.util.Date'
I also tried assigning this to it.dateCreated
new Date(2011开发者_如何学C, 09, 31, 10, 57, 00)
But that gave a similar error also.
First, you should never change a domain instance property like that just for "display" purposes. The reason for that is the domain instance is actually going to be persisted with your changes when the hibernate session flushes.
Second, let the view display the property in the correct format. That's the responsibility of the view, not the domain instance, or the controller.
Date.format(...)
returns a String (see the documentation). You can't assign a java.lang.String to java.util.Date
Either println it.dateCreated.format('mm/dd')
or use Grails' formatDate tag to render this in your view.
it.dateCreated
is a java.util.Date
. When you do: it.dateCreated.format('mm/dd')
you are formatting the date but returning a java.lang.String
. Then you try to assign that String
to your it.dateCreated
, but it can't take it, because it is a date.
Try just: println it.dateCreated.format('mm/dd')
精彩评论