【问题标题】:java.lang.NullPointerException in command object命令对象中的 java.lang.NullPointerException
【发布时间】:2014-06-06 19:47:07
【问题描述】:

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

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("yyyy-MM-dd", to) 时,我得到了java.lang.NullPointerException。为了在验证命令对象之前成功解析日期,我该怎么做?

我阅读了命令对象文档。我从那里得到了这个样本。如果删除 ? beforeValidate 不起作用,我试过了,所以我知道我需要提供 null 保险箱,但我不知道如何在我的场景中做到这一点

class Person {
    String name

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

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

感谢您的宝贵时间。

【问题讨论】:

    标签: grails


    【解决方案1】:

    fromto 在 Command Object 中设置为 Date,因此带有 fromto 名称的请求参数字符串将被转换为 Date 然后绑定到这些字段。

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

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

    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 } 无法将类型“java.lang.String”的属性值转换为属性“to”所需的类型“java.util.Date” ';嵌套异常是 java.lang.IllegalArgumentException:无法解析日期:无法解析日期:“2014-05-31”
    • 我还删除了 beforeValidate 及其内容,并从约束中删除了空白:假和空白:假,以查看是否有一些从字符串到日期的自动转换,没有成功和相同的错误消息无法将类型“java.lang.String”的属性值转换为属性“to”所需的类型“java.util.Date”;嵌套异常是 java.lang.IllegalArgumentException:无法解析日期:无法解析日期:“2014-05-31”
    • 解决方案修复原始问题 java.lang.NullPointerException,但我需要知道在验证命令对象之前将字符串日期解析为 Date,这是使用 beforevalidte 的初衷。
    • 是的,我正要建议查看 stackoverflow.com/questions/17241914/… 以获取旧版本的 Grails
    猜你喜欢
    • 2020-10-27
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多