2014-07-20 35 views
1

我在嘗試驗證和保存域對象時遇到問題。Grails:對象正在保存,雖然它有錯誤

首先,我做了驗證,當驗證是錯誤的,我把我的錯誤裏面將來要保存對象,像這樣:

myDomain.errors.reject("An Error") 
myDomain.discard() 

然後,當我試圖挽救這個對象,我可以看到,錯誤列表有一個錯誤,但'驗證()'返回'真正',而且,當功能完成後,對象被自動保存。 我必須說,所有被調用的函數都在同一個類中,它是一個控制器。

我需要知道如何編碼我的保存功能(在控制器類中),它只顯示錯誤而不保存對象,並且驗證結果良好時保存對象。

謝謝!

回答

0

此修復程序是使用:

@Transactional(readOnly = true) 

對於其定位於服務文件中的函數。 它使函數避免在最後保存事務,這首先導致了問題。

0

myDomain.validate()將覆蓋myDomain.errors清除reject()。你可以做這樣的事情:

// bind etc. 
    ... 

    // do grails validation 
    if (!myDomain.validate()) { 
    myDomain.discard() 
    } 

    // do custom validation 
    if (custom validation has errors) { 
    myDomain.errors.reject() 
    myDomain.discard() 
    } 

如果你可以自定義驗證打動你到validator上myDomain的,你不需要自定義驗證。

您不需要明確調用save()。

相關問題