2014-10-30 34 views
1

有一個域類其中一個領域具有約束像固定Grails的驗證錯誤的一個空白,空場的Grails

AnnualIncome(blank:true, nullable:true,range: 100000..100000000). 

如果用戶不希望填補了這一領域,則這個字段的默認值是0,然後出現一個grails默認異常,說明AnnualIncome的值不在100000到100000000之間。

但是,當用戶填寫AnnualIncome字段,然後應用範圍約束時,此約束便會使用。但是如何管理此狀態,以便在用戶希望填寫此細節時檢查約束並且他不想填寫它,不應該提出異常?在驗證閉合

可以有條件地適用您的約束:

+1

你應該遵循字段名稱爲「AnnualIncome」的命名約定應該是駱駝大小寫。 – Abs 2014-10-30 07:28:58

回答

0

您可以在範圍字段使用custom validator爲您的使用情況。

在驗證閉合

,您可以檢查

if(AnnualIncome ==0){ 
    //do somthing 
}else{ 
    // apply constraint here. 
} 
0

當你允許null值設置爲null而不是0。這樣可以更輕鬆地區分而非集合或實際輸入的0(可能會在將來的某個時間點更改,例如因爲您允許NPO註冊)。

否則,您應該刪除範圍檢查。如果它與存儲數據不相關,那麼它應該在域模型級別處理(GORM對象不是域模型)。

+0

這可以是一個簡單的選擇,但默認情況下,grails將此值設置爲零。但如何將其設置爲空? – user3789902 2014-10-30 10:12:43

+0

@ user3789902「AnnualIncome」是什麼類型? – cfrick 2014-10-30 10:23:40

+0

它是浮點型。 – user3789902 2014-10-30 10:36:57