GWT Как отменить изменения в редакторе

Я там способ Редактора отбрасывает изменения, внесенные в его свойства? Это на стороне клиента. Нет настойчивости.

У меня есть:

public class ClaseEditor extends PopupPanel implements Editor<claseproxy> {
 @UiField ValidatedTextBox tema;
 @UiField ValidatedTextBox catedratico;
}
</claseproxy>

Я использую этот редактор в ListEditor, так как вы знаете, что есть список редакторов в

ListEditor

Если пользователь создаст один, это нормально, тогда, если пользователь его отредактирует. У меня есть варианты сохранения или отмены, я сохраняю ok, просто скройте редактор и сделанные изменения в порядке.

Но в пользовательских кликах "Отмена", и если в свойствах были внесены некоторые изменения, редактор сбрасывает (лениво) редактор, который изменяется на прокси.

Да, я могу сохранить начальное значение в строке, а затем восстановить с помощью setValue() в texboxes. Но есть ли другой способ (редактор API), который предотвращает это?

Спасибо

2 ответа

Да. На кнопке отмены выполните огонь() без создания какого-либо запроса. То, что редактор никогда не влияет на исходный прокси-сервер, является неизменным. Флеш дает вам копию (если вы не используете RequestFactoryEditorDriver, тогда он возвращает контекст, который вы отправили в него с помощью driver.edit(proxy,ctx). Fire() без запроса очищает копию прокси-сервера редактирования, если пользователь хочет снова его редактировать 't получить ошибку, что она уже редактируется.


Если вы используете SimpleBeanEditorDriver, вы можете выполнить новый вызов по методу edit, не вызывая сначала flush.

Класс SimpleBeanEditorDriver читает из bean в редакторы на edit и из редакторов в bean на flush.

Если вы не хотите возвращать все редакторы, но только один из них, не забудьте вызвать flush при каждом принятом изменении редактора, чтобы иметь возможность восстановить до последней точки flush. Обратите внимание, что вызов flush является локальным и необязательно должен соответствовать вызову сохраняющемуся слою.

Пример кода

private Bean currentObject;
/**
 * Start editing the given object.
 */
public void edit(Bean object) {
 this.currentObject = object;
 this.driver.edit(object);
}
/**
 * Call this every time an editor is in a consistent state.
 * (e.g. onBlur event if validation succeeds)
 */
private void save() {
 this.driver.flush(); // saves editors' state into currentObject
}
/**
 * Call this to cancel changes on all editing editors.
 * (e.g. onBlur event if validation fails)
 */
private void revert() {
 this.driver.edit(currentObject); // reloads currentObject into editors
}
/**
 * Stores all pending changes to the server.
 * Remember to validate all editors.
 */
public void commit() {
 Bean object = this.driver.flush();
 Server.persist(object);
}

licensed under cc by-sa 3.0 with attribution.