Sven,

Thanks I hit send by mistake. It became clear that it was a BigDecimal
instantiation issue and nothing to do with the RangeValidator.

Thanks all.

On Wed, Dec 20, 2023 at 9:25 AM Sven Meier <[email protected]> wrote:

> Hi Eric,
>
> you can read in the javadoc, why your first solution is 'unpredictable':
>
>
> https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/math/BigDecimal.html#%3Cinit%3E(double)
>
> Sven
>
> On 20.12.23 15:18, Eric Hamel wrote:
> > Hi Bas,
> >
> > Thanks for the response.
> >
> > I discovered the NumberTextField had its own RangeValidator 2 seconds
> after posting. With that said, I’m getting the same issue when using it.
> >
> > To be clear, I’m not getting any Exceptions, everything seems to work
> fine, but the form validation fails if the user types in 0.01.
> >
> >
> > Form<BaseDTO> form = new Form<>(“form”, getModel());
> > add(form);
> >
> > NumberTextField<BigDecimal> testField = new
> NumberTextField<BigDecimal>(“testField”, new
> PropertyModel<BigDecimal>(form.getModel(), “testProp”));
> > form.add(testField);
> >
> >
> > I’ve been digging and I found the oddity:
> >
> > If I set the min value as follows:
> >
> > testField.setMinimum(new BigDecimal(0.00));
> >
> > When the user enters 0.01, the following feedback message is showed:
> >
> > The value of ’testField’ must be between 0.01 and 999,999.99.
> >
> > However, if I set the min value with:
> >
> > testField.setMinimum(BigDecimal.valueOf(0.00));
> >
> > The user can enter 0.01 and NO feedback message is showed.
> >
> >
> >
> > -------------
> > Eric H.
> >
> >
> >
> >
> >
> >> On Dec 20, 2023, at 8:48 AM, Bas Gooren <[email protected]> wrote:
> >>
> >> Hi Eric,
> >>
> >> First off: according to the source of NumberTextField, it automatically
> adds a RangeValidator (see NumberTextField#onConfigure). So you shouldn’t
> need to add the RangeValidator yourself.
> >>
> >> Regarding your problem: what kind of error messages are you getting?
> >>
> >> The range validator (or more specifically: the AbstractRangeValidator
> class) handles the comparison between min, max and actual values using
> compareTo. So there should not be any issues with rounding.
> >>
> >> Please share the code you use to initialize the relevant field, perhaps
> we can spot a mistake.
> >>
> >> Met vriendelijke groet,
> >> Kind regards,
> >>
> >> Bas Gooren
> >>
> >> Op 20 december 2023 bij 14:38:53, Eric Hamel ([email protected]
> <mailto:[email protected]>) schreef:
> >>
> >>> Good morning,
> >>>
> >>> We encountered an issue this morning with our use of
> RangeValidator<BigDecimal>.
> >>>
> >>> The customer requested a validation for amounts between 0.01 and
> 999,999.00.
> >>>
> >>> We have a NumberTextField<BigDecimal> to which we added the
> RangeValidator. If the user enters 0.01 the validation fails.
> >>>
> >>> If I set the min value to 0.009 I can get it to work but the error
> messages are off.
> >>>
> >>> I’m wondering if it’s a rounding or scale issue but I cannot figure
> out how to make the RangeValidator work.
> >>>
> >>> Anyone have any insight on this ?
> >>>
> >>> Thank you.
> >>> Eric H.
> >>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: [email protected] <mailto:
> [email protected]>
> >>> For additional commands, e-mail: [email protected] <mailto:
> [email protected]>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to