Re: How to null-check manually converted TextField values?
Thanks Fred, that's what I found yesterday night after hours of searching, too. However, I think I'll go with Sebastiens approach, because it unifies converter and validation check. Thanks to both of you! 2013/2/14 Fred!!! : > Hi, > > an other solution is to add a NullAcceptingValidator to your Textfield. Thus > wicket will pass to IValidator.validate(IValidatable) > > See > http://ci.apache.org/projects/wicket/apidocs/6.0.x/org/apache/wicket/validation/INullAcceptingValidator.html > > Cheers Fred > > Am 14.02.2013 00:55, schrieb Sebastien: > >> Hi, >> >> Well, the required flag ensures that the input is not empty, not that it >> is >> of the correct type... >> >> If the conversion fails, is it supposed (I guessed) to throw a >> ConversionException. >> As it seems to not be the case, I would have overridden convert input as >> follow (not tested): >> >> class MyJodaDateTextField >> { >> protected void convertInput() >> { >> super.convertInput(); >> >> Date value = this.getConvertedInput(); >> >> if (value == null) >> { >> //handles the error message >> ValidationError error = new ValidationError(); >> error.addKey("MyJodaDateTextField.ConversionError"); >> //wicket6 >> //error.addMessageKey("MyJodaDateTextField.ConversionError"); >> //wicket1.5 >> error.setVariable("date", value); >> this.error(error); >> } >> } >> } >> >> MyJodaDateTextField.properties will contain: >> MyJodaDateTextField.ConversionError='${date}' is not a valid Joda datetime >> >> Also pay attention to check the type in getConverter >> >> { >> if (Date.class.isAssignableFrom(type)) >> { >> return (IConverter)new JodaDateTimeConverter(); >> } >> >> return super.getConverter(type); >> } >> >> >> Hope this helps, >> Sebastien. >> >> On Wed, Feb 13, 2013 at 4:46 PM, Sebastian Gaul >> wrote: >> >>> I have a TextField which overrides it's getConverter method to add a >>> Joda time converter instead: >>> >>> new TextField(id) { >>> @Override >>> public IConverter getConverter(Class type) { >>> return (IConverter) new JodaDateTimeConverter(); >>> } >>> }; >>> >>> The converter returns null if input was invalid. However, I want to be >>> able to flag this field as required, and I don't know how to do that: >>> >>> - textField.isRequired(true) does not work, because required checks >>> are done before conversion. This doesn't work for non-empty but >>> invalid inputs. >>> >>> - textField.add(.. some validator ..) does not work because no >>> validator is called if the converter returned null. >>> >>> I really don't see an approach to flag my date fields as required. Do >>> you know how to do that? Probably my approach is not suited at all? >>> >>> - >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>> > > > - > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: How to null-check manually converted TextField values?
Hi, an other solution is to add a NullAcceptingValidator to your Textfield. Thus wicket will pass to IValidator.validate(IValidatable) See http://ci.apache.org/projects/wicket/apidocs/6.0.x/org/apache/wicket/validation/INullAcceptingValidator.html Cheers Fred Am 14.02.2013 00:55, schrieb Sebastien: Hi, Well, the required flag ensures that the input is not empty, not that it is of the correct type... If the conversion fails, is it supposed (I guessed) to throw a ConversionException. As it seems to not be the case, I would have overridden convert input as follow (not tested): class MyJodaDateTextField { protected void convertInput() { super.convertInput(); Date value = this.getConvertedInput(); if (value == null) { //handles the error message ValidationError error = new ValidationError(); error.addKey("MyJodaDateTextField.ConversionError"); //wicket6 //error.addMessageKey("MyJodaDateTextField.ConversionError"); //wicket1.5 error.setVariable("date", value); this.error(error); } } } MyJodaDateTextField.properties will contain: MyJodaDateTextField.ConversionError='${date}' is not a valid Joda datetime Also pay attention to check the type in getConverter { if (Date.class.isAssignableFrom(type)) { return (IConverter)new JodaDateTimeConverter(); } return super.getConverter(type); } Hope this helps, Sebastien. On Wed, Feb 13, 2013 at 4:46 PM, Sebastian Gaul wrote: I have a TextField which overrides it's getConverter method to add a Joda time converter instead: new TextField(id) { @Override public IConverter getConverter(Class type) { return (IConverter) new JodaDateTimeConverter(); } }; The converter returns null if input was invalid. However, I want to be able to flag this field as required, and I don't know how to do that: - textField.isRequired(true) does not work, because required checks are done before conversion. This doesn't work for non-empty but invalid inputs. - textField.add(.. some validator ..) does not work because no validator is called if the converter returned null. I really don't see an approach to flag my date fields as required. Do you know how to do that? Probably my approach is not suited at all? - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: How to null-check manually converted TextField values?
Hi, Well, the required flag ensures that the input is not empty, not that it is of the correct type... If the conversion fails, is it supposed (I guessed) to throw a ConversionException. As it seems to not be the case, I would have overridden convert input as follow (not tested): class MyJodaDateTextField { protected void convertInput() { super.convertInput(); Date value = this.getConvertedInput(); if (value == null) { //handles the error message ValidationError error = new ValidationError(); error.addKey("MyJodaDateTextField.ConversionError"); //wicket6 //error.addMessageKey("MyJodaDateTextField.ConversionError"); //wicket1.5 error.setVariable("date", value); this.error(error); } } } MyJodaDateTextField.properties will contain: MyJodaDateTextField.ConversionError='${date}' is not a valid Joda datetime Also pay attention to check the type in getConverter { if (Date.class.isAssignableFrom(type)) { return (IConverter)new JodaDateTimeConverter(); } return super.getConverter(type); } Hope this helps, Sebastien. On Wed, Feb 13, 2013 at 4:46 PM, Sebastian Gaul wrote: > I have a TextField which overrides it's getConverter method to add a > Joda time converter instead: > > new TextField(id) { > @Override > public IConverter getConverter(Class type) { > return (IConverter) new JodaDateTimeConverter(); > } > }; > > The converter returns null if input was invalid. However, I want to be > able to flag this field as required, and I don't know how to do that: > > - textField.isRequired(true) does not work, because required checks > are done before conversion. This doesn't work for non-empty but > invalid inputs. > > - textField.add(.. some validator ..) does not work because no > validator is called if the converter returned null. > > I really don't see an approach to flag my date fields as required. Do > you know how to do that? Probably my approach is not suited at all? > > - > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >
How to null-check manually converted TextField values?
I have a TextField which overrides it's getConverter method to add a Joda time converter instead: new TextField(id) { @Override public IConverter getConverter(Class type) { return (IConverter) new JodaDateTimeConverter(); } }; The converter returns null if input was invalid. However, I want to be able to flag this field as required, and I don't know how to do that: - textField.isRequired(true) does not work, because required checks are done before conversion. This doesn't work for non-empty but invalid inputs. - textField.add(.. some validator ..) does not work because no validator is called if the converter returned null. I really don't see an approach to flag my date fields as required. Do you know how to do that? Probably my approach is not suited at all? - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org