1. what currency is doing here? I have kg
2. why not just do value.compareTo(maximum) ? in IntegerRangeValidator for example
3. why messages are hardcoded? where is localization?
4. what class should I use for bigDecimal?
5. why not use RangeValidator for all numeric type with value.compareTo? why inner class? why not a separate class for all Comparable ?