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] > >
