在客户端:
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(...)
我可以从数据存储获取实体,但实体可能不适合用户访问,在这种情况下我需要在服务器端检查它,但我找不到合适的地方进行验证,对此有什么想法吗?