Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

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() + "'));");
                        }
                        
                    }
                });
            }
{code}

The

...

above

...

example

...

also

...

adds

...

in

...

JavaScript

...

effects

...

borrowed

...

from

...

the

...

Effects

...

example

...

using

...

the

...

script.aculo.us

...

library.

...

HTML Comment
hiddentrue

Everything below here was added by aakoch, a novice, so please, if there is something wrong, fix it! Thanks!

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() + "'));");
					
                     // or update the feedback panel
}
            }
               target.addComponent(form.getPage().get("feedback"))return formVisitor;
                 }
            }}
	});
}

To update the feedback panel:

Code Block

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