3

エディターがそのプロパティに加えられた変更を破棄する方法はありますか? これはクライアント側で。永続性はありません。

私は持っている:

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

あなたの中にエディターのリストがあることを知っているので、私はこのエディターを ListEditor で使用します

 ListEditor<ClaseProxy, ClaseEditor>

ユーザーが作成した場合は問題ありませんが、ユーザーが編集した場合は問題ありません。保存またはキャンセルのオプションがあります。保存はOKです。エディターを非表示にするだけで、変更はOKです。

ただし、ユーザーが [キャンセル] をクリックすると、プロパティに変更があった場合、エディターはプロキシに変更することを (遅延して) フラッシュします。

はい、文字列に開始値を保存してから、texbox で setValue() を使用して復元できます。しかし、これを防ぐ他の方法 (エディター API) はありますか?

ありがとうございました

4

2 に答える 2

0

を使用している場合は、最初に呼び出すことなく、メソッドでSimpleBeanEditorDriver新しい呼び出しを行うことができます。editflush

SimpleBeanEditorDriverクラスは で Bean からエディターに読み取り、 でエディターから Bean に読み取りeditますflush

すべてのエディターを元に戻すのではなく、そのうちの 1 つだけを元に戻したい場合は、最後のポイント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);
}
于 2014-03-31T20:30:07.373 に答える
-1

はい。キャンセルボタンで、リクエストを作成せずにfire()を実行します。エディターが元のプロキシに影響を与えることはありません。不変です。フラッシュはコピーのみを提供します(RequestFactoryEditorDriverを使用している場合を除き、.を使用して送信したコンテキストを返しますdriver.edit(proxy,ctx)。要求のないfire()は、ユーザーが再度編集したい場合に編集プロキシコピーをクリアします。すでに編集されているというエラー。

于 2012-04-13T17:51:02.647 に答える