クライアント側:
factory.find(proxyId).fire(new Receiver<P>()
{
@Override
public void onSuccess( P response )
{
proxy = response;
...
}
@Override
public void onFailure( com.google.web.bindery.requestfactory.shared.ServerFailure error )
{
Window.alert( error.getMessage() );
}
}
サーバー側では、以下のようなロケーターを使用します:
public class myLocator extends Locator<T, String>
{
@Injector LocatorHook hook;
@Override
public T find( Class<? extends T> clazz, String id )
{
T result = ...;
hook.run( result );
return result;
}
....
}
hook.run()
メソッドがスローされる可能性RunTimeException("validation exception")
があります。クライアント側で例外をキャッチすることを期待していますが、例外をonFailure()
キャッチしましたが、メッセージは「内部サーバーエラー」であり、スローされた例外ではありませんhook.run()
: 「検証例外」。
クライアントがサーバー側でスローした例外をキャッチできるようにするためのアイデアはありますか?
更新: トーマスが言ったように、データ ストアから新鮮なオブジェクトを検証するのは奇妙ですが、サービス メソッドの使用方法がわからない状況に遭遇しました: クライアントEntityProxyId
でオブジェクトをfactory.find( proxyId ).fire(...)
取得し、データストアからエンティティを取得できます。しかし、エンティティはユーザーがアクセスするのに適していない可能性があります。この状況では、サーバー側で確認する必要がありますが、検証を行うのに適した場所が見つかりません。これに関するアイデアはありますか?