Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

WebWork The framework adds support for client-side validation on top of XWork's the standard validation framework.

Client-side validation can be enabled You can enable it on a per-form basis by specifying validate="true" in the form tag:.

Code Block
html
html

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

You must specify If a name for the form in order for client-side validation.You should also make sure you provide the 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 <ww <saf:form> tag. For example, if you have an Action named

Code Block
html
html
titleReferencing "submitProfile" in the "/user" namespace

...

<s
Code Block
htmlhtml

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

While the following will "work" in the sense that the form will function correctlyTechnically, the form's action attribute can refer to a "path" that includes the namespace and action as a URI. But, client-side validation will not: requires that the action name and namespeact to be set separately.

Code Block
html
html
titleWon't work with client-side validation!
<s
<ww:form action="'/user/submitProfile.action'" validate="true">
  ...
</wws:form>

Of course, all the standard All the usual validation configuration steps still 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.

Panelinfo
bgColor#ffffce
titleThe left hand doesn't know ...

The

(info) Not all validators support client-side validation. Only validators that implement ScriptValidationAware support this feature. Refer to the list of WebWork validators to see which ones do so.

(info) Note that the required attribute on many WebWork Tags has nothing to do Struts Tags is not integrated with client-side validation.

...

! The tag attribute is used by certain themes (like xhtml) to put a visual marker (usually '*') next to the field. The tag doesn't know if the validation system actually "requires" the field or not.

Client Side Validation Types

There are two styles of client side validation.

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:

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

...