2012-04-13 13 views
3

私はエディタの方法でプロパティの変更を破棄しますか?これはクライアント側です。忍耐はない。GWTエディタの変更を破棄する方法

私が持っている:uはユーザーが1つを作成する場合は編集者のリストは、あなたの

ListEditor<ClaseProxy, ClaseEditor> 

である知っているよう

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

私はListEditorにこのエディタを使用し、その大丈夫、その場合はユーザーをそれを編集する。私は、保存またはキャンセルのオプションを持って、私はOKを保存し、エディタを非表示にして、変更はOKです。

ユーザーがキャンセルをクリックし、プロパティにいくつかの変更があった場合、エディタは、プロキシに変更を加える(怠惰に)フラッシュします。

はい私は開始値を文字列に格納してから、texboxesのsetValue()で復元できます。しかし、これを防ぐ他の方法(エディタAPI)がありますか?

ありがとうございました

答えて

0

はい。キャンセルボタンで、リクエストを作成せずにfire()を実行します。エディタが元のプロキシに影響を与えないものは、不変です。フラッシュは、あなたにコピーを与えます(RequestFactoryEditorDriverを使用していない限り、それはdriver.edit(proxy,ctx)で送られたコンテキストを返します)。要求のないfire()は、エディットプロキシコピーをクリアします。それはすでにedittedされていることをエラーが発生します。

+0

EditorDriver.flush()はSimpleBeanEditorDriver付きコピーを返さない、それは元のオブジェクトにそれらの変更をフラッシュするすべてsubeditorsを尋ねます。あるいは、私はあなたが「あなたにコピーを渡す」ということを誤解していますか? –

+0

単純なbeanドライバでは、flushはプロキシの編集可能なコピーを提供します。元のプロキシは、最初に取得したときと同じです。 flushという用語は、元のプロキシに編集された変更をフラッシュするかもしれないように思えますが、そうではありません。 – Deanna

+0

SimpleBeanEditorDriverは、通常のBeanで使用できるようにプロキシを想定していないため、動作するモデルのコピーを作成できません。 RequestFactoryEditorDriverは、エディタに値を渡す前にcontext.editを実行します。おそらくあなたはそれを代わりに考えていますか? –

0

あなたがSimpleBeanEditorDriverを使用している場合は、最初にflushを呼び出さずに、edit方法で新しいコールを行うことができます。

SimpleBeanEditorDriverクラスがに豆から読み込みます編集者はedit、編集者からは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); 
} 
関連する問題