I'm afraid that all that AJAX and URL parameters has kind of muddied things for me, but going back to the basic rules of JSF:
When you click a (non-AJAX) commandLink, all of the input controls of the form containing that link are marshalled and sent to the server.
In JSF, you do not update the properties and then validate. In JSF, validation occurs first. One of JSF's primary characteristics is that when an action fires, ALL of the submitted properties are already guaranteed valid and posted to the backing bean(s). If even one validation fails, the backing bean will not be updated and the action method will not fire.
An IDE is no substitute for an Intelligent Developer.