You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "George Christman (JIRA)" <ji...@apache.org> on 2012/06/05 19:50:22 UTC
[jira] [Created] (TAP5-1947) BigDecimal Validator
George Christman created TAP5-1947:
--------------------------------------
Summary: BigDecimal Validator
Key: TAP5-1947
URL: https://issues.apache.org/jira/browse/TAP5-1947
Project: Tapestry 5
Issue Type: Improvement
Components: tapestry-core
Affects Versions: 5.3.3
Reporter: George Christman
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
{
if (value.scale() > 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) {
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) {
formSupport.addValidation(field, "maxprecision", buildMessage(formatter, field, constraintValue), constraintValue);
}
}
//AppModule
@SuppressWarnings("rawtypes")
public static void contributeFieldValidatorSource(MappedConfiguration<String, Validator> configuration) {
configuration.add("maxScale", new MaxScale());
configuration.add("maxPrecision", new MaxPrecision());
}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira