2014-02-25 47 views
1

我想添加一些特定的業務規則以在實例化實體時執行驗證。如何強制構造函數規則在Groovy中的字符串字段上不爲空而不爲空

實體的類有一個名爲String類型的字段。我想強制在施工期間名稱字段必須至少有一個字符的內容。

我會如何在我的模型中處理這些業務規則?我希望在實體級別擁有它,並避免在服務中處理此驗證。

+1

隨着'如果()'在構造測試參數的有效性?有什麼問題? –

+0

我想我正試圖在Groovy中找到最實用的方法,因爲我是新手。在構造函數上使用if()條件會很好,但我希望確認這是實現它的最佳實踐。 – Badweather

回答

1

您可以使用類似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 
相關問題