整数かどうかのチェックは見落としがち

 Cubby の定義済みバリデーションクラスに NumberValidator というのがあります。これは、対象の値が少数であっても負の数でも数値と認識できれば OK というバリデータです。なので、正の整数だけ扱いたい場合はこれだけでは不十分だということです。

 ところで、RangeValidator は整数しか扱えません。少数を入れると内部でNumberFormatExceptionが発生するので、必ずバリデーションが不合格になります。1から9までの数値をOKにしていても1.5は通りません。でもNumberValidatorは少数を通してしまうので、エラーメッセージが不自然だなと思う方は自分で整数かどうかのバリデーションを準備して1.5を通さないようにするか、RangeValidatorの少数対応版を作るしかありません。ちょいと面倒臭いですね。