Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Incomplete
-
5.3.3
-
None
Description
Tapestry should offer the ability to validate BigDecimal max length's for currency/amounts. I'm donating the following code which validates maxScale and maxPrecision. Unfortunately, I haven't written anything to handle the clientside validation.
//app.properties
maximum-precision=You may provide at most %d numbers for %s.
maximum-scale=You may provide at most %d decimal digits for %s.
//MaxScale
public class MaxScale extends AbstractValidator<Integer, BigDecimal> {
public MaxScale()
{ super(Integer.class, BigDecimal.class, "maximum-scale"); } @Override
public void validate(Field field, Integer constraintValue, MessageFormatter formatter, BigDecimal value)
throws ValidationException
private String buildMessage(MessageFormatter formatter, Field field, Integer constraintValue)
{ return formatter.format(constraintValue, field.getLabel()); }@Override
public void render(Field field, Integer constraintValue, MessageFormatter formatter, MarkupWriter writer,
FormSupport formSupport) { formSupport.addValidation(field, "maxscale", buildMessage(formatter, field, constraintValue), constraintValue); }
}
//MaxPrecision
public class MaxPrecision extends AbstractValidator<Integer, BigDecimal> {
public MaxPrecision() { super(Integer.class, BigDecimal.class, "maximum-precision"); }
@Override
public void validate(Field field, Integer constraintValue, MessageFormatter formatter, BigDecimal value)
throws ValidationException
{ if (value.precision() > constraintValue) throw new ValidationException(buildMessage(formatter, field, constraintValue)); }
private String buildMessage(MessageFormatter formatter, Field field, Integer constraintValue) { return formatter.format(constraintValue, field.getLabel()); }
@Override
public void render(Field field, Integer constraintValue, MessageFormatter formatter, MarkupWriter writer,
FormSupport formSupport)
}
//AppModule
@SuppressWarnings("rawtypes")
public static void contributeFieldValidatorSource(MappedConfiguration<String, Validator> configuration)