graphValidator value validation occurs after update model phase. There is no other option because we need all the model to be updated in order to check the whole bean. Thats why all the changes actually made in this case. So you should catch this situation by yourself and reset the tabPanel for example by using reseting selectedTab.
Thanks, I understand or better that's what I was already assuming. But what is a good place to reset the selectedTab? The valueChangeListener of the tabPanel?
As an idea for future releases: What do think of a special handler to check whether a tab switch is allowed?
No, this should happen after valueChangeListener is called, on the UPDATE_MODEL_VALUES phase.
Tabs are already validated, you can use "action" attribute of rich:tab to implement such behavior.