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的初衷