It affects finding changes for client side, why not use getState(false) in getters ?
For example:
TextArea.getRows actually uses getState(true)
I agree: A getter should never change the internal state of an object!
In my case this led to a wrong / unexpected behavior of the UI when dummy changes triggert Focus- and BlurListeners on the client side. I helped myself with a state check & reset:
public static String getStyleNameNoDirty(Component component) {
assertNotNull(component);
UI ui = component.getUI();
boolean isDirty = ui != null && ui.getConnectorTracker().isDirty(component);
String result = component.getStyleName();
if (ui != null && isDirty == false) {
ui.getConnectorTracker().markClean(component);
}
return result;
}
Is there a reason why getStyleName() marks a component as dirty?
There’s a fix for most of these already in the master branch: https://dev.vaadin.com/review/#/c/3809/
Most likely coming in the next maintenance release.