Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

If you want to have a more "web 2.0" validation on your forms here is a quick way to do it:

Using the Wicket Example: Ajax Builtin: FormPage as a base, the onError method is called if any of your validators fail, in there you need to view the children components attached to your form and check the isValid() method on each one to determine if that component passed validation.  A really easy to do this is the following:

Code Block
             protected void onError(final AjaxRequestTarget target, Form form) {
             
                log.debug("onError called");

                form.visitFormComponents(new FormComponent.IVisitor() {
                    
                    public void formComponent(FormComponent formComponent) {
                        log.debug("Checking: "  + formComponent.getMarkupId() + 
                                             " " + formComponent.isValid());
                        
                        if (!formComponent.isValid()){ 
                           // If this component failed validation, do something
                           // fancy to display it to the user...
                            target.addComponent(formComponent);
                            target.appendJavascript(
                               "new Effect.Shake($('" + formComponent.getMarkupId() + "'));");
                        }
                        
                    }
                });
            }

The above example also adds in JavaScript effects borrowed from the Effects example using the script.aculo.us library.

Wiki Markup
{htmlcomment:hidden}Everything below here was added by aakoch, a novice, so please, if there is something wrong, fix it! Thanks!{htmlcomment}

Note

The above code won't compile under 1.3.0-BETA.

Here's some code that will work with version 1.3.0-BETA.

Code Block
protected void onError(final AjaxRequestTarget target, final Form form) {
    form.visitFormComponents(new IVisitor() {
        public Object formComponent(IFormVisitorParticipant formVisitor) {
            if (formVisitor instanceof FormComponent) {
                FormComponent formComponent = (FormComponent) formVisitor;
                
                if (!formComponent.isValid()){ 
                    // If this component failed validation, do something
                    // fancy to display it to the user...
                     target.addComponent(formComponent);
					 
                     // do a little dance
                     target.appendJavascript(
                        "new Effect.Shake($('" + formComponent.getMarkupId() + "'));");
                 }
            }
            return formVisitor;
        }
	});
}

To update the feedback panel:

Code Block
protected void onError(final AjaxRequestTarget target, final Form form) {
    // or update the feedback panel
    target.addComponent(form.getPage().get("feedback"));
}