Grails版本 >= 2.3
Config.groovy
中的一个设置定义了绑定参数到Date
时应用程序范围内使用的日期格式
grails.databinding.dateFormats = [
'MMddyyyy', 'yyyy-MM-dd HH:mm:ss.S', "yyyy-MM-dd'T'hh:mm:ss'Z'"
]
grails.databinding.dateFormats
中指定的格式将按照列表中包含它们的顺序进行尝试。
您可以使用 @BindingFormat
覆盖这些应用程序范围内的格式,以适用于单个命令对象。
import org.grails.databinding.BindingFormat
class Person {
@BindingFormat('MMddyyyy')
Date birthDate
}
Grails版本低于2.3
我不相信需要手动提取日期!
你的固执得到了回报,早在Grails 1.3之前就可以直接绑定日期了。步骤如下:
(1)创建一个类为您的日期格式注册编辑器
import org.springframework.beans.PropertyEditorRegistrar
import org.springframework.beans.PropertyEditorRegistry
import org.springframework.beans.propertyeditors.CustomDateEditor
import java.text.SimpleDateFormat
public class CustomDateEditorRegistrar implements PropertyEditorRegistrar {
public void registerCustomEditors(PropertyEditorRegistry registry) {
String dateFormat = 'yyyy/MM/dd'
registry.registerCustomEditor(Date, new CustomDateEditor(new SimpleDateFormat(dateFormat), true))
}
}
(2) 在grails-app/conf/spring/resources.groovy
中注册以下bean,使Grails能够识别该日期编辑器:
beans = {
customPropertyEditorRegistrar(CustomDateEditorRegistrar)
}
(3) 现在,当你以 yyyy/MM/dd
格式在一个名为 foo
的参数中发送日期时,它将自动绑定到一个名为 foo
的属性,使用以下任一方法:
myDomainObject.properties = params
或者
new MyDomainClass(params)