Grails 命令对象中的java.lang.NullPointerException

Grails 命令对象中的java.lang.NullPointerException,grails,Grails,我想在验证命令对象之前解析一个字符串,这是我的命令对象代码 class ActivitiesCommand { List schools List departments Date from Date to static constraints = { schools nullable:false departments nullable:false from blank:false to

我想在验证命令对象之前解析一个字符串,这是我的命令对象代码

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)
    }
}
但是当我尝试
def from=new Date().parse(“yyyy-MM-dd”,from)
def to=new Date().parse(“yyy-MM-dd”,to”)时,我得到了
java.lang.NullPointerException
。为了在验证命令对象之前成功解析日期,我可以做些什么

我阅读命令对象文档。我从那里得到了这个样品。如果在验证之前删除不起作用,我尝试过,因此我知道我需要提供空安全设置,但我不知道在我的场景中如何执行

class Person {
    String name

    static constraints = { name size: 5..45 }

    def beforeValidate() { name = name?.trim() } 
}

谢谢您的时间。

from
to
在命令对象中设置为日期,因此带有
from
to
名称的请求参数字符串将转换为日期,然后绑定到这些字段

如果预期的日期格式匹配,则绑定将成功

在您的情况下,
beforeValidate
中的
from
to
被视为
字符串。如果它们实际上是
字符串
,则可以在约束中使其
可为空:false
,或者在验证之前在
中执行以下检查:

from = from ? Date.parse("yyyy-MM-dd", from) : new Date() - 1 //for example

注意适当使用了
Date.parse()

我正在尝试@dmahapatro推荐这里是代码def beforeValidate(){from=from?Date.parse(“yyyy-MM-dd”,from”):new Date()-1}无法将属性“to”的类型“java.lang.String”的属性值转换为所需的类型“java.util.Date”;嵌套异常是java.lang.IllegalArgumentException:无法分析日期:不可解析的日期:“2014-05-31”我还删除了beforeValidate及其内容,并从约束中删除了blank:false和to blank:false,以查看是否存在从strin到date的自动转换,将属性“to”的类型“java.lang.String”的属性值转换为所需的类型“java.util.Date”,没有成功,并且相同的错误消息失败;嵌套异常为java.lang.IllegalArgumentException:无法分析日期:不可解析的日期:“2014-05-31”解决方案修复原始问题java.lang.NullPointerException,但是我需要知道在validate命令对象之前解析字符串date to date,这是使用beforevalidte的初衷