BTW, I just located where the adapter is instantiated. Again, in:

http://svn.apache.org/repos/asf/wicket/releases/wicket-1.5-RC4.2/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java

You will find in line 465:

        add((Behavior)new ValidatorAdapter(validator));

I really can't see how my INullAcceptingValidator could ever get a chance to process a null value, unless the check of "validateValidators()" is changed...

On Fri, 03 Jun 2011 12:47:57 +0300, Alexandros Karypidis <akary...@yahoo.gr> wrote:

Hello again,

I'm in a weird place. I've stepped through the code and located my problem in:

http://svn.apache.org/repos/asf/wicket/releases/wicket-1.5-RC4.2/wicket-core/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java

At line 1383, the method "validateValidators()" visits all validators. While iterating, it reaches my validator BUT decides to skip it because of the check on line 1398:

if (isNull == false || validator instanceof INullAcceptingValidator<?>)

The problem is that my validator is "wrapped" by class "ValidatorAdapter":

http://svn.apache.org/repos/asf/wicket/releases/wicket-1.5-RC4.2/wicket-core/src/main/java/org/apache/wicket/validation/ValidatorAdapter.java

As you can see, this class implements IValidator<T> and therefore the check fails, even though the value of the "wrapped" validator is in fact an instance of INullAcceptingValidator.

I would have got the expected behavior if the check was written as:

if (isNull == false
        || validator instanceof INullAcceptingValidator<?>
        || (
                // wicket should check against the actual validator:
                validator instanceof ValidatorAdapter<T> &&
                validator.getValidator() iinstanceof INullAcceptingValidator<?>)
       )

Could this be a bug?

On Fri, 03 Jun 2011 12:05:46 +0300, Martin Grigorov <mgrigo...@apache.org> wrote:

Maybe org.apache.wicket.markup.html.form.FormComponent.isInputNullable()
which is overridden by
org.apache.wicket.markup.html.form.AbstractTextComponent.isInputNullable()

On Fri, Jun 3, 2011 at 12:00 PM, Alexandros Karypidis <akary...@yahoo.gr> wrote:
Hello,

1) I have a custom validator that implements INullAcceptingValidator.
2) A TextField component in my form has validator (1) attached to it and is
setRequired(false).
3) When I submit my form with the text input empty, the validator does NOT
get called. It only gets called if there is a value with the HTML input
field.

I was expecting that the validator would be invoked upon submission even if the text field is empty, in order to validate tha value "null". At least this is what I understand as far as INullAcceptingValidator goes. However, this does not appear to happen. Instead, Wicket goes on to call the form's
onSubmit() method with the value "null" inside my model.

What am I missing?

---------------------------------------------------------------------
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