2012-08-17 65 views
0

我正在使用最新的apache commons validator。問題解釋如下。Apache公共驗證器,要驗證的bean屬性都應該是字符串?

我的豆是具有2個屬性全名(字符串)&年齡(INT)。驗證「必需」,但需要檢查「整數」的年齡。

bean.setFullName("Tester"); -----> Will Pass 
bean.setAge("Too Old"); ---> "required Pass but "integer" Fail. 

results = validator.validate(); 

注:以上是可能的,如果年齡屬性爲字符串,但它不是和setAge不會接受字符串值,然後在到達之前validator.validate拋出異常()。

驗證應該在我們設置bean之前檢查。在上述情況下,我需要使所有屬性字符串比在validation.xml中檢查整數/條件。

我怎麼用這個工作時,我的年齡屬性爲整數。有點困惑。處理與日期,整數等豆?

+0

@balusc,請幫助 – Pirzada 2012-08-17 22:54:40

+0

@bozho,任何幫助,請 – Pirzada 2012-08-20 00:08:04

+0

您能不能給異常就一些細節問題你看? – pd40 2012-08-21 10:07:04

回答

4

我的豆是具有2個屬性全名(字符串)&年齡(INT)。在上驗證「必需」,但需要檢查「整數」的年齡以及

如果您的域名類聲明age已經是一個int那麼你有兩個選擇

  1. 檢查數據調用setAge之前(INT一個),你可以使用IntegerValidator
  2. 提供一個重載的方法setAge(字符串一)的internall使用IntegerValidator

我的建議

commons-validator只對字符串有效(如果你希望你的整個bean一次被驗證)並且不適合你的場景。我建議你傾倒標準的JSR 303。它含有豐富的功能,並且具有兩個非常好的實現:

  1. Hibernate Validator
  2. Apache BVAL
+0

感謝您的回覆。非常豐富。我有2個問題。我使用Servlet/JSP項目作爲noob(無框架)。什麼應該是驗證的首選方式(在開發中使用,只是建議)?有人建議我使用BeanUtils。映射屬性? 。任何想法。 – Pirzada 2012-08-23 03:13:49

+0

我仍然建議使用JSR 303.它可以獨立於任何框架獨立使用。用法很簡單。如果您需要幫助,請發佈更多問題,我會盡力提供幫助。 – 2012-08-23 03:37:02

+0

給我一些時間來看看您的解決方案,並會發布任何問題。在日子結束之前,我會獎勵你的賞金。你認爲BeanUtils嗎?映射屬性可以解決我與apache commons validator整數屬性? – Pirzada 2012-08-23 12:24:07