code: @Override
      public void validate(final FacesContext context) {
          if (context == null) {
              throw new NullPointerException();
          }
  
          final Validator[] validators = getValidators();
          final Object value = getValue();
  
          if (!validateRequired(context, value)) {
              return;
          }
  
          if (validators == null) {
              return;
          }
  
          for (final Validator validator : validators) {
              try {
                  validator.validate(context, this, value);
              }
              catch (final ValidatorException ve) {
                  // If the validator throws an exception, we're
                  // invalid, and we need to add a message
                  setValid(false);
                  FacesMessage message;
                  final String validatorMessageString = getValidatorMessage();
  
                  if (null != validatorMessageString) {
                      message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                                  validatorMessageString,
                                  validatorMessageString);
                      message.setSeverity(FacesMessage.SEVERITY_ERROR);
                  }
                  else {
                      final Collection<FacesMessage> messages = ve.getFacesMessages();
                      if (null != messages) {
                          message = null;
                          final String cid = getClientId(context);
                          for (final FacesMessage m : messages) {
                              context.addMessage(cid, m);
                          }
                      }
                      else {
                          message = ve.getFacesMessage();
                      }
                  }
                  if (message != null) {
                      final Sheet sheet = getSheet();
                      if (sheet == null) {
                          return;
                      }
                      context.addMessage(getClientId(context), message);
                      sheet.getInvalidUpdates().add(
                                  new SheetInvalidUpdate(sheet.getRowKeyValue(context), sheet.getColumns().indexOf(this), this, value,
                                              message.getDetail()));
  
                  }
              }
          }
  
      }
docs: Process all validators (skip normal UIInput behavior)