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<C>)new JodaDateTimeConverter();
         }

         return super.getConverter(type);
     }


Hope this helps,
Sebastien.

On Wed, Feb 13, 2013 at 4:46 PM, Sebastian Gaul <sebast...@mgvmedia.com>wrote:

I have a TextField which overrides it's getConverter method to add a
Joda time converter instead:

new TextField<P>(id) {
     @Override
     public <P> IConverter<P> getConverter(Class<P> type) {
         return (IConverter<P>) 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

Reply via email to