2014-09-01 123 views
0

我試圖設置使用jQuery Datepicker的人的出生日期。但是,我所得到的是Property dateOfBirth must be a valid DateGrails - 域對象無法正確驗證

因此,原來,我的控制器看起來是這樣的:

def update(Person personInstance) { 
    if (personInstance == null) { 
     // do Something 
     return 
    } 

    if (personInstance.hasErrors()) { 
     respond personInstance.errors, view: 'edit' 
     return 
    } 

    // do the rest 
} 

我想通了,這與jQuery我應該以產生一個適當的Date對象使用SimpleDateFormat對象。儘管如此,即使我直接將一個新的Date對象分配給dateOfBirth並隨後驗證了域對象,如下面的代碼段所示 - 我仍然收到Property dateOfBirth must be a valid Date錯誤。

def update(Person personInstance) { 
    if (personInstance == null) { 
     // do Something 
     return 
    } 

    // added code 
    personInstance.dateOfBirth = new Date() 
    personInstance.validate() 
    // added code 

    if (personInstance.hasErrors()) { 
     respond personInstance.errors, view: 'edit' 
     return 
    } 

    // do the rest 
} 

謝謝你的任何幫助:)

+2

您仍然看到錯誤的原因是因爲在綁定您的命令/域對象後自動調用驗證。在手動調用'personInstance.validate()'之前使用'personInstance.clearErrors()'。你可以在文檔中看到更多關於這個的內容:http://grails.org/doc/2.2.x/ref/Domain%20Classes/clearErrors.html – 2014-09-01 08:27:14

+0

謝謝你的提示:)現在它完美的工作! – gabriel 2014-09-01 08:48:56

+1

我應該添加一個答案嗎? – 2014-09-01 09:06:33

回答

1

你之所以仍然出現錯誤,是因爲驗證是結合您的命令/域對象時,該方法被調用後自動調用。

使用personInstance.clearErrors()手動調用personInstance.validate()以清除任何現有的綁定/驗證錯誤。您可以在documentation中看到更多關於此的信息。