RequestFactory と Editor フレームワークで GWT 2.5rc1 を使用しています。関連付けられたモデルでエンティティを保存すると、保存するLocator
前にサーバーが関連付けられたモデルを再読み込みします。したがって、クライアントの変更はすべて上書きされます。例えば:
@ProxyFor(value=Foo.class, locator=FooLocator.class)
public interface FooProxy extends EntityProxy {
void setBar(BarProxy bar);
BarProxy getBar();
}
@ProxyFor(value=Bar.class, locator=BarLocator.class)
public interface BarProxy interface EntityProxy {
...
}
// The save method implemented in an Activity.
// Invoked when the editor's save button is clicked.
public void onSave() {
// driver is a RequestFactoryEditorDriver
FooRequest request = (FooRequest) driver.flush();
request.save(entity).fire(myReceiver);
}
// The service on the server that saves the two entities.
public class FooService {
public Foo save(Foo foo) {
barDao.save(foo.getBar()); // Bar has been reloaded via the BarLocator and all changes lost
fooDao.save(foo);
return foo;
}
}
サーバーではBarLocator.find(...)
、Bar インスタンスをリロードし、着信 Bar インスタンスで行われた変更を上書きするメソッドが呼び出されます。
ログ出力の例:
FooLocator loading Foo
setBar called
BarLocator loading Bar
save called
最後の 3 行はすべて、DB からロードされた Bar を参照しています。ロケーターまたはサービス コードのいずれにも、変更されたバーが表示されません。