That is because you have the "required" attribute on the form itself. That will cause the browser to use html5 validation on the field before it is submitted. If you remove that from each <input> tag it will not validate in the browser and your server validation will pick it up instead.
If you use the webassist jquery html5 validation you can use custom validation messages and styles with the client validation as well.