[
https://issues.apache.org/jira/browse/TAP5-1947?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jochen Kemnade updated TAP5-1947:
---------------------------------
Labels: bulk-close-candidate (was: features)
This issue affects an old version of Tapestry that is not actively developed
anymore, and is therefore prone to be bulk-closed in the near future.
If the issue still persists with the most recent version of Tapestry (currently
5.4.0, available from Maven Central), please update it as soon as possible and
add '5.4.0') to the issue's affected versions.
> 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
> Priority: Minor
> Labels: bulk-close-candidate
>
> 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 was sent by Atlassian JIRA
(v6.3.4#6332)