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!!! <schreibf...@googlemail.com>:
> 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
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to