You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

WebWork adds support for client-side validation on top of XWork's standard validation framework. You can enable it on a per-form basis by specifying validate="true" in the <ww:form> tag:

<ww:form name="'test'" action="'javascriptValidation'" validate="true">
  ...
</ww:form>

Of course, all the standard validation configuration steps still apply. Client-side validation uses the same validation rules as server-side validation. That said, there are some caveats to using client-side validation:

  • You must use the <ww:form> tag
  • You must provide the correct "action" and "namespace" attributes to the <ww:form> tag

For example, if you have an Action named "submitProfile" in the "/user" namespace, you must use

<ww:form namespace="'/user'" action="'submitProfile'" validate="true">
  ...
</ww:form>

While the following will "work" in the sense that the form will function correctly, client-side validation will not:

<ww:form action="'/user/submitProfile.action'" validate="true">
  ...
</ww:form>


(info) Note that the "required" attribute on many WebWork UI tags has nothing to do with client-side validation.
(warning) Upgrade Alert: This feature was introduced in WebWork 2.1. If upgrading from a previous version, make sure you are using the correct validators in validators.xml. You must be using the com.opensymphony.webwork.validators.JavaScriptRequired*Validator version of the standard XWork validators.

Building a Validator that supports client-side validation

Any validator can be extended to support client-side validation by implementing the com.opensymphony.webwork.validators.ScriptValidationAware interface:

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:

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();
}

Only JavaScript is supported at this time.

  • No labels