我想在验证命令对象之前解析一个字符串,这是我的命令对象代码
class ActivitiesCommand {
List schools
List departments
Date from
Date to
static constraints = {
schools nullable:false
departments nullable:false
from blank:false
to blank:false
}
def beforeValidate() {
def from = new Date().parse("yyyy-MM-dd", from)
def to = new Date().parse("yyyy-MM-dd", to)
}
}
但是当我尝试java.lang.NullPointerException
或def from = new Date().parse("yyyy-MM-dd", from)
时,我得到def to = new Date().parse("yyyy-MM-dd", to)
。为了在验证命令对象之前成功解析日期,我该怎么办?
我读了命令对象docs。我从那里得到了这个样本。我尝试删除? beforeValidate不起作用,所以我理解我需要提供一个空保险箱,但我不知道如何在我的方案中这样做
class Person {
String name
static constraints = { name size: 5..45 }
def beforeValidate() { name = name?.trim() }
}
感谢您的时间。
答案 0 :(得分:1)
from
和to
设置为日期,因此具有from
和to
名称的请求参数字符串将转换为日期,然后绑定到这些领域。
如果预期的日期格式匹配,则绑定将成功。
在您的情况下,from
中的to
和beforeValidate
会被视为String
。如果它们实际上是String
,那么您可以在约束条件下nullable: false
或在beforeValidate
中进行检查:
from = from ? Date.parse("yyyy-MM-dd", from) : new Date() - 1 //for example
请注意恰当使用Date.parse()