public function Submit (array & $rawRequestParams = []) {
		$result = NULL;
		$fieldName = $this->name;
		if ($this instanceof \MvcCore\Ext\Forms\Fields\IVisibleField && ($this->readOnly || $this->disabled)) {
			// get value previously assigned from session or by developer when called: 
			// `$form->SetValues(array(/* some predefined values from DB...*/))`
			$result = $this->value;
		} else {
			$result = NULL;
			if (isset($rawRequestParams[$fieldName])) 
				$result = $rawRequestParams[$fieldName];
			if ($result === NULL) {
				$result = $this->value;
				$processValidators = FALSE;
			} else {
				$processValidators = TRUE;
			}
			if ($processValidators && $this->validators) {
				foreach ($this->validators as $validatorName => $validatorNameOrInstance) {
					// set safe value as field submit result value
					$validator = NULL;
					if (is_string($validatorNameOrInstance)) {
						$validator = $this->form->GetValidator($validatorName);
					} else if ($validatorNameOrInstance instanceof \MvcCore\Ext\Forms\IValidator) {
						$validator = $validatorNameOrInstance->SetForm($this->form)->SetField($this);
					} else {
						return $this->throwNewInvalidArgumentException(
							'Unknown validator type configured: `' . $validatorNameOrInstance 
							. '`, type: `' . gettype($validatorNameOrInstance) . '`.'
						);
					}
					$result = $validator->SetField($this)->Validate($result);	
				}
				// add required error message if necessary and if there are no other errors
				if ($this->required && !$this->errors) {
					$safeSubmittedValueType = gettype($result);
					if (
						$result === NULL ||
						($safeSubmittedValueType == 'string' && mb_strlen($result) === 0) ||
						($safeSubmittedValueType == 'array'  && count($result) === 0)
					) $this->AddValidationError(
						$this->form->GetDefaultErrorMsg(\MvcCore\Ext\Forms\IError::REQUIRED)
					);
				}
			}
		}
		return $result;
	}