Because I'm stubborn, and wanted to get the "send" button (and a checkbox) enabled via ajax only when the user has entered the right data in the form.

The only way I seem to be able to do that is in the way below.

But on the other hand I'm starting to think that might not be a good way to do things. The user gets no real good feedback as to *why* the button/checkbox is not enabled if I do it that way...

/Stefan

On 2009-07-01 16:55, Igor Vaynberg wrote:
not sure why you are going through all that. add the validator.
behavior#onupdate() will be called when validation passes and the
model is updated, behavior#onerror() will be called if there is an
error.

-igor

2009/7/1 Stefan Malmesjö<s.m.mo...@gmail.com>:
Ok... I think I solved it, but it feels like it's an over complicated way of
doing it... comments?

-------------------
final TextField<String>  fromAddress = new TextField<String>("fromAddress");
        // fromAddress.add(EmailAddressValidator.getInstance());



        fromAddress.add(new AjaxFormComponentUpdatingBehavior("onchange") {

            @Override
            protected void onUpdate(AjaxRequestTarget target) {
                IValidatable<String>  fromAddressForValidation = new
IValidatable<String>() {
                    private boolean isValid = true;

                    public void error(IValidationError error) {
                        isValid = false;
                    }

                    public String getValue() {
                        return fromAddress.getValue();
                    }

                    public boolean isValid() {
                        return isValid;
                    }
                };
                EmailAddressValidator.getInstance()
                    .validate(fromAddressForValidation);
                if (fromAddressForValidation.isValid()) {
                    System.out.println("valid!");
                } else {
                    System.out.println("not valid");
                }
            }
        }.setThrottleDelay(Duration.ONE_SECOND));


-------------------

On 2009-06-30 18:15, Stefan Malmesjö wrote:
The subject should have been AjaxFormComponentUpdatingBehavior... sorry
about that :-[

On 2009-06-30 18:12, Stefan Malmesjö wrote:
Hi,

I'm playing around with validation and ajax, and can't quite seem to do
what I want. The goal is to have a checkbox toggle enabled/disabled
depending on whether the user has entered a valid email address. So, my
simple test looks like this:

------------------
final TextField<String>  fromAddress = new
TextField<String>("fromAddress");
        fromAddress.add(EmailAddressValidator.getInstance());

        fromAddress.add(new AjaxFormComponentUpdatingBehavior("onchange")
{

            @Override
            protected void onUpdate(AjaxRequestTarget target) {
                if (fromAddress.isValid()) {
                    System.out.println("valid");
                } else {
                    System.out.println("not valid");
                }
            }
        }.setThrottleDelay(Duration.ONE_SECOND));
----------------

If the entered address is valid, then I do get the expected output
"valid"

But if it's not valid, then I get a warning message:

--------------
WARN  - WebSession                 - Component-targetted feedback message
was left unrendered. This could be because you are missing a FeedbackPanel
on the page.  Message: [FeedbackMessage message = "'asd...@l' is not a valid
email address.", reporter = fromAddress, level = ERROR]
------------

I do have a feedbackpanel on the page (if I submit the form, then I get
the "asd...@l is not a valid email address" output there).

However, I really don't want the error message being output during the
ajax process, I just want to see if it's valid, and then enable/disable the
checkbox accordingly.

I also tried playing with AjaxEventBehavior instead of
AjaxFormComponentUpdatingBehavior, but then the value of the input field
always is null, and hence valid :) I tried using fromAddress.inputChanged,
but that made no difference that I could see.

I'm sure I'm making some stupid mistake. Can anyone guide me in the right
direction?

/Stefan


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


Reply via email to