属性startDate必须是Grails中的有效日期错误

时间:2016-05-13 09:05:45

标签: validation grails

我面临与上述here相同的问题,但当我厌倦了解决方案时,我仍然遇到同样的错误:

  

属性startDate必须是有效的Date属性endDate必须是a   有效日期

这是我的域名:

class EmpRef {
    String workName
    String title
    Date   startDate
    Date   endDate
    String reasonForLeaving
    String directMgrName
    String directMgrTitle
    String directMgrTelephone
}

这是我的保存操作:

def save(EmpRef empRefInstance) {
    empRefInstance.startDate=Date.parse('dd-MM-yyyy',params.startDate)
    empRefInstance.endDate=Date.parse('dd-MM-yyyy',params.endDate)
    if (empRefInstance == null) {
        notFound()
        return
    }

    if (empRefInstance.hasErrors()) {
        respond empRefInstance.errors, view:'create'
        return
    }

    empRefInstance.save flush:true
}

GSP中的jQuery代码:

$('.datePicker').datepicker({
    changeYear: true,
    changeMonth: true,
    autoSize: true,
    dateFormat: "dd-mm-yy",
    maxDate: "0y",
    showAnim: "show",
    yearRange:'c-70:c+0'
});

1 个答案:

答案 0 :(得分:0)

如果EmpRef是方法的参数,则会根据请求自动绑定。这会导致startDateendDate都出错。在这些列上设置值后,您需要执行empRefInstance.validate()而不是empRefInstance.hasErrors()才能在域中获得新的验证结果。

另外,因为你在之后检查empRefInstance是否,你设置了开始和结束日期,如果这个对象是null,你将在前面的行上得到NullPointerException,所以检查null应该在之前的代码