0

私は最新のapachecommonsバリデーターに取り組んでいました。以下に説明する問題。

My Beanには、fullName(String)とage(int)の2つのプロパティがあります。両方で検証が「必須」ですが、年齢も「整数」であるかどうかを確認する必要がありました。

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

results = validator.validate();

注: ageプロパティがStringであるが、そうでない場合、上記は可能です。setAgeはString値を受け入れず、validator.validate()に到達する前に例外をスローします。

Beanを設定する前に、検証を確認する必要があります。上記の状況では、validation.xmlよりもすべてのプロパティを文字列にして整数/条件をチェックする必要があります。

私の年齢プロパティが整数の場合、これをどのように処理するか。少し混乱しました。日付、整数などでBeanを処理しますか?

4

1 に答える 1

4

My Beanには、fullName(String)とage(int)の2つのプロパティがあります。両方で検証が「必須」ですが、年齢も「整数」であるかどうかを確認する必要がありました

ドメインクラスageがすでにであると宣言しているint場合は、2つのオプションがあります

  1. setAge(int a)を呼び出す前にデータを確認すると、IntegerValidatorを使用できます。
  2. internallがIntegerValidatorを使用するオーバーロードされたメソッドsetAge(String a)を提供します

私の推薦

commons-validatorは文字列に対してのみ機能し(Bean全体を一度に検証する場合)、シナリオには適していません。標準のJSR303を優先してそれをダンプすることをお勧めします。機能が豊富で、2つの非常に優れた実装があります。

  1. Hibernateバリデーター
  2. Apache BVAL
于 2012-08-23T01:52:16.163 に答える