【发布时间】:2014-10-25 10:25:36
【问题描述】:
我正在尝试使用 jQuery Datepicker 设置一个人的出生日期。但是,我得到的只是Property dateOfBirth must be a valid Date。
所以,我的控制器最初是这样的:
def update(Person personInstance) {
if (personInstance == null) {
// do Something
return
}
if (personInstance.hasErrors()) {
respond personInstance.errors, view: 'edit'
return
}
// do the rest
}
我发现,对于 jQuery,我应该使用 SimpleDateFormat 对象来生成正确的 Date 对象。尽管如此,即使我直接将新的 Date 对象分配给 dateOfBirth 并随后验证 personInstance 域对象 - 就像在下面的代码段中一样 - 我仍然会收到 Property dateOfBirth must be a valid Date 错误。
def update(Person personInstance) {
if (personInstance == null) {
// do Something
return
}
// added code
personInstance.dateOfBirth = new Date()
personInstance.validate()
// added code
if (personInstance.hasErrors()) {
respond personInstance.errors, view: 'edit'
return
}
// do the rest
}
感谢您的帮助:)
【问题讨论】:
-
您仍然看到错误的原因是因为在绑定您的命令/域对象后会自动调用验证。在手动调用
personInstance.validate()之前使用personInstance.clearErrors()。您可以在文档中查看更多相关信息:grails.org/doc/2.2.x/ref/Domain%20Classes/clearErrors.html -
感谢您的提示 :) 现在它可以完美运行了!
-
我应该添加它作为答案吗?
-
您还可以使用字段上方的@BindingFormat 注释将日期绑定为从客户端接收到的格式。更多信息在这里:grails.org/doc/2.4.x/api/org/grails/databinding/…
-
谢谢@NikhilBhandari。效果同样好,甚至为我节省了几行代码!
标签: validation grails domain-object