public boolean validate(ScServletData data) {
    if (hasDegreesError(data)
        || hasMinutesError(data)
        || hasSecondsError(data)
        || hasDirectionError(data)) {
      String msg = "Cannot parse value.";
      String sample = getSampleFormat();
      if (sample != null) msg += "  Sample: " + sample;
      getState(data).addError(msg);
      return false;
    }

    if (_validator == null) return true;

    JwList<JwErrorIF> errors = new JwList<JwErrorIF>();
    _validator.validate(getValue(data), errors);
    if (errors.isEmpty()) return true;

    getState(data).setErrors(errors);
    return false;
  }