我在我當前的用例中進行了驗證。 我的應用程序具有標準結構(WEB < - > EJB3服務< - > EJB3 DAO < - > DB)。 我有一個應用了驗證註釋的實體。如何將複雜的業務驗證與JSR-303合併?
@Entity
class PhoneNumber {
...
private NumberType numberType;
}
其中
enum NumberType {
FIXED,
MOBILE,
ANY
}
現在我有新的驗證規則應用。在PhoneNumber更新中,如果之前設置爲FIXED或MOBILE,則不應將NumberType更改爲ANY。只是數據庫操作之前
我Bean驗證規則進行檢查,並且上面的規則應該在業務層應用(至少我是這麼認爲的),有一個DB訪問取得了先前的實體版本進行比較。 但沒有bean尚未驗證,我不得不手動檢查,例如, numberType不爲null。
能否請您使用Bean驗證時提供給我一些建議或一般規則如何應對更復雜的業務內容驗證(不僅是在隔離檢查單字段的值)?
謝謝,但這不符合我的問題。我不需要跨場驗證。我需要驗證一個字段與之前的值(存儲在數據庫中)。 – grafthez
因此,您必須從自定義驗證程序中的數據庫中查詢實體,並檢查其值。但我認爲這不是一個好習慣。相反,我會加載業務邏輯中的舊實體,並在這裏檢查它的值。這樣你就不會將這個邏輯隱藏在驗證器中。 – Kai