Apache commons验证器,要验证的bean属性都应该是字符串吗?

时间:2012-08-17 13:51:13

标签: java validation java-ee servlets apache-commons

我正在研究最新的apache commons验证器。问题解释如下。

My Bean有2个属性fullName(String)&年龄(int)。验证“必需”,但年龄也需要检查“整数”。

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

results = validator.validate();

注意:如果age属性为String,则可以在上面,但是not和setAge不会接受String值并在到达validator.validate()之前抛出异常。

在设置bean之前应该检查验证。在上面的情况下,我需要创建所有属性字符串,而不是在validation.xml中检查整数/条件。

当我的年龄属性为整数时,我如何处理此问题。有点困惑。处理带有日期,整数等的bean?

1 个答案:

答案 0 :(得分:4)

My Bean有2个属性fullName(String)&年龄(int)。 验证“必需”,但需要检查“整数”以及

如果您的域类已声明age已成为int,那么您有两个选择

  1. 在调用setAge(int a)之前检查数据,您可以使用IntegerValidator
  2. 提供内部使用IntegerValidator
  3. 的重载方法setAge(String a)

    我的推荐

    commons-validator仅适用于字符串(如果您希望立即验证整个bean),并且不适合您的场景。我建议你转而支持标准JSR 303。它功能丰富,有两个非常好的实现:

    1. Hibernate Validator
    2. Apache BVAL