Hello,
I have a BeanFieldGroup that binds a BeanItem to a CustomComponent with a TextField.
[code]
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.TextField;
import com.vaadin.data.util.BeanItem;
import com.vaadin.event.FieldEvents.TextChangeEvent;
public class PriorityEditor extends CustomComponent {
@PropertyId("severity")
private TextField severityTextField = new TextField();
private Button saveButton = new Button();
private BeanFieldGroup<?> bindFieldsBuffered = new BeanFieldGroup<>(Priority.class);
public void edit(BeanItem<Priority> priorityItem) {
severityTextField.addTextChangeListener(this::textChange);
bindFieldsBuffered.setBuffered(true);
bindFieldsBuffered.setItemDataSource(priorityItem);
bindFieldsBuffered.bindMemberFields(this);
}
private void textChange(TextChangeEvent event) {
if (bindFieldsBuffered.isModified()) //is not modified
saveButton.setEnabled(true);
else
saveButton.setEnabled(false);
}
…
}
[/code]Now if I select my severityTextField and press a key on the keyboard I do get a TextChangeEvent but bindFieldsBuffered.isModified() returns false. Now if I put a second character I get a second TextChangeEvent and bindFieldsBuffered.isModified() returns true. However I’d like to get true the first time around. Is this a bug or should I use another listener?