2013-07-01 45 views
0

我需要驗證XML從一個供應商來並將其保存在Oracle XML類型....Spring和JSR303

現在我需要一個過程來觸發驗證引擎......這是要驗證並且將指標中的值保存爲「YES」或「NO」,例如,如果XML中的地址不存在於dB中,則地址指示器將變爲「NO」[我們正在另一個過程中糾正...]

我已經在Spring 303中使用了JSR303,這是非常有效和易於使用的....但它使用了一個窗體支持對象和@valid .....

我可以在我的設計中使用它嗎?

還是讓我這麼說吧 -

是否有可能在Spring的JSR-303實現,以驗證不是來自表單輸入對象字段?

我知道它的一個非常模糊的問題......所以請讓我知道如果我需要更多地解釋

回答

0

大部分由JSR-303供應商進行了對象的驗證工作(在大多數情況下,Hibernate驗證器) 。 Spring在這個過程中的作用很小 - 它只是分析用戶的數據,將其綁定到對象並將該對象傳遞給驗證器。另外,在應用程序啓動期間,Spring會創建Validator實例。

所以,你可以干涉這個過程:創建對象,手動驗證,獲得Validator實例並將對象傳遞給他。結果你會得到一個SetConstraintViolation,它表示每個字段的錯誤。

在這個方案中,主要的問題是當您使用XML文檔進行操作時,JSR-303驗證程序與對象一起工作。您可以將XML文檔反序列化爲對象,驗證它,如果沒有錯誤,則將其序列化回XML並寫入數據庫。

我建議閱讀Hibernate驗證手冊的以下部分:2.2. Validating constraints它描述Validator界面和一些有用的方法:validate()validateProperty()validateValue()。這裏從春天

一個好處是,你不需要將自己與Validation.buildDefaultValidatorFactory().getValidator()創建Validator:只是@Autowire它與所有其他的Spring bean:

@Autowired 
private Validator validator; 
+0

謝謝...一個問題...做你認爲我應該在這裏使用JSR或使用舊的Spring異常處理..... – AVI

+0

這取決於你有多少驗證規則。如果你有一些規則更好使用簡單的驗證機制。 –