Re: How to null-check manually converted TextField values?

2013-02-14 Thread Sebastian Gaul
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?

2013-02-14 Thread 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



Re: How to null-check manually converted TextField values?

2013-02-13 Thread 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
>
>


How to null-check manually converted TextField values?

2013-02-13 Thread Sebastian Gaul
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