Validators can implement the com.opensymphony.webwork.validators.ScriptValidationAware interface to provide The framework adds support for client-side validation :
Code Block |
---|
public interface ScriptValidationAware extends FieldValidator {
public String validationScript(Map parameters);
}
|
The value returned by validationScript will be executed on the client-side before the form is submitted if client-side validation is enabled. For example, the requiredstring validator has the following code:
Code Block |
---|
public String validationScript(Map parameters) {
String field = (String) parameters.get("name");
StringBuffer js = new StringBuffer();
js.append("value = form.elements['" + field + "'].value;\n");
js.append("if (value == \"\") {\n");
js.append("\talert('" + getMessage(null) + "');\n");
js.append("\treturn '" + field + "';\n");
js.append("}\n");
js.append("\n");
return js.toString();
}
|
To enable client-side validation, use the <ww:form> tag:
on top of the standard validation framework.
Client-side validation can be enabled on a per-form basis by specifying validate="true"
in the form tag.
Code Block | ||||
---|---|---|---|---|
| ||||
<s:form name="test" action="javascriptValidation" validate="true">
...
</s:form>
|
If a name
for the form is not given, the action mapping name will be used as the form name. Otherwise, a correct action
and namespace
attributes must be provided to the <saf:form>
tag.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<s:form namespace="/user" action="submitProfile" validate="true">
...
</s:form>
|
Technically, the form's action attribute can refer to a "path" that includes the namespace and action as a URI. But, client-side validation requires that the action name and namespeact to be set separately.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<s:form action="/user/submitProfile.action" validate="true"> | ||||||
Code Block | ||||||
html | html | <ww:form name="'test'" action="'javascriptValidation'" validate="true" > ... </wws:form> |
...
All the usual validation configuration steps apply to client-side validation. Client-side validation uses the same validation rules as server-side validation. If server-side validation doesn't work, then client-side validation won't work either.
Info | ||
---|---|---|
| ||
The |
Client Side Validation Types
There are two styles of client side validation.
Used by the xhtml theme and css_xhtml theme | |
Used by the ajax theme |