code: public ValidationMessage[] validate( TagData data ) {
  	ValidationMessage[] result = null;
  
  	if( !isValid( data ) ) {
  	    result = new ValidationMessage[] {
  		new ValidationMessage( data.getId(), "isValid() == false" ) };
  	}
  
  	return result;
      }
docs: Translation-time validation of the attributes.
  Request-time attributes are indicated as such in the TagData parameter.
  Because of the higher quality validation messages possible,
  this is the preferred way to do validation (although isValid()
  still works).
  
  <p>JSP 2.0 and higher containers call validate() instead of isValid().
  The default implementation of this method is to call isValid().  If
  isValid() returns false, a generic ValidationMessage[] is returned
  indicating isValid() returned false.</p>
  
  @param data The TagData instance.
  @return A null object, or zero length array if no errors, an
  array of ValidationMessages otherwise.
  @since JSP 2.0