почему textfiled сохраняет новое значение в поле?
При вводе значения в textfield у меня проверка на совпадение со старым значение, если его нет то появляется диалоговое окно в котором "да" - это сохранение нового значения, "нет" - это осавить старое. При нажатии "нет" в textfield остается старое значение и не пропадет пока не перезагрузишь страницу, как это исправить?
if (flag[0] == true) {
ConfirmDialog.show(UI.getCurrent(),
"Внимание",
"Сохранить изменения перед переключением или будет утеряно?",
"Ok",
"Cancel",
(ConfirmDialog cd) -> {
if (cd.isConfirmed()) {
ConfigurationBean.saveConfig(CFG, resourceBundleWeb);
UI.getCurrent().getPage().reload();
} else {
flag[0] = false;
fields.forEach(field -> {
appSysTable.refreshRowCache();
});
}
});
}
TextField login = new TextField(resourceBundleWeb.getString(ResourceKeys.RepositoryControlComponent_HorizontalLayout_TextField_Login_Caption.toString()));
login.setWidth(40, Unit.PERCENTAGE);
login.setPropertyDataSource(new MethodProperty(appSys.getGitConfigBean(), "login"));
login.setNullRepresentation("");
String oldLoginValue = login.getValue();
login.focus();
login.addValueChangeListener(valueChangeListener(oldLoginValue));
login.setImmediate(true);
componentForm.addComponent(login);
private Property.ValueChangeListener valueChangeListener (String oldValue) {
return new Property.ValueChangeListener() {
private static final long serialVersionUID = 5678485350989070188L;
@Override
public void valueChange(Property.ValueChangeEvent event) {
String newValue = (String) event.getProperty().getValue();
LOGGER.info("oldValue " + oldValue);
LOGGER.info("newValue " + newValue);
if (oldValue == newValue) {
flag[0] = false;
} else { flag[0] = true; }
}
};
}