1
我想添加一些特定的業務規則以在實例化實體時執行驗證。如何強制構造函數規則在Groovy中的字符串字段上不爲空而不爲空
實體的類有一個名爲String類型的字段。我想強制在施工期間名稱字段必須至少有一個字符的內容。
我會如何在我的模型中處理這些業務規則?我希望在實體級別擁有它,並避免在服務中處理此驗證。
我想添加一些特定的業務規則以在實例化實體時執行驗證。如何強制構造函數規則在Groovy中的字符串字段上不爲空而不爲空
實體的類有一個名爲String類型的字段。我想強制在施工期間名稱字段必須至少有一個字符的內容。
我會如何在我的模型中處理這些業務規則?我希望在實體級別擁有它,並避免在服務中處理此驗證。
您可以使用類似GContracts的東西。然後,你可以聲明一個類Invariant
像這樣:
@Grab('org.gcontracts:gcontracts:1.1.3')
import org.gcontracts.annotations.*
@Invariant({ name?.size() > 0 })
class Entity {
String name
public Entity(String name) {
this.name == name
}
}
assert new Entity('tim')
assert new Entity('')
在例如new Entity('')
的調用失敗:
org.gcontracts.ClassInvariantViolation: <class invariant> Entity
{ name?.size() > 0 }
| | |
"" 0 false
隨着'如果()'在構造測試參數的有效性?有什麼問題? –
我想我正試圖在Groovy中找到最實用的方法,因爲我是新手。在構造函數上使用if()條件會很好,但我希望確認這是實現它的最佳實踐。 – Badweather