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

 return super.getConverter(type);
 }


Hope this helps,
Sebastien.

On Wed, Feb 13, 2013 at 4:46 PM, Sebastian Gaul sebast...@mgvmedia.comwrote:


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

new TextFieldP(id) {
 @Override
 public P IConverterP getConverter(ClassP type) {
 return (IConverterP) 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-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!!! 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 (IConverterC)new JodaDateTimeConverter();
  }

  return super.getConverter(type);
  }


 Hope this helps,
 Sebastien.

 On Wed, Feb 13, 2013 at 4:46 PM, Sebastian Gaul
 sebast...@mgvmedia.comwrote:

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

 new TextFieldP(id) {
  @Override
  public P IConverterP getConverter(ClassP type) {
  return (IConverterP) 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



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 TextFieldP(id) {
@Override
public P IConverterP getConverter(ClassP type) {
return (IConverterP) 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



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

return super.getConverter(type);
}


Hope this helps,
Sebastien.

On Wed, Feb 13, 2013 at 4:46 PM, Sebastian Gaul sebast...@mgvmedia.comwrote:

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

 new TextFieldP(id) {
 @Override
 public P IConverterP getConverter(ClassP type) {
 return (IConverterP) 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