命令对象中的java.lang.NullPointerException

时间:2014-06-06 19:47:07

标签: grails

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

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.NullPointerExceptiondef 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() } 
}

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

在命令对象中将

fromto设置为日期,因此具有fromto名称的请求参数字符串将转换为日期,然后绑定到这些领域。

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

在您的情况下,from中的tobeforeValidate会被视为String。如果它们实际上是String,那么您可以在约束条件下nullable: false或在beforeValidate中进行检查:

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

请注意恰当使用Date.parse()