我有RequestFactory和一些请求接口
public interface FooRequest extends RequestContext {
Request<List<Foo>> findSmt();
}
我无法弄清楚应该在哪里放置findSmt()
实现以及如何与该实现进行连接。
答案 0 :(得分:1)
您可以使用@Service批注来表示实现findSmt的类。你应该不继承FooRequest。
@Service(FooRequestImpl.class)
public interface FooRequest extends RequestContext {
Request<List<FooProxy>> findSmt();
}
...
public class FooRequestImpl
{
List<FooDAO> findSmt() //note that we dropped the Request and changed the Proxy to the DAO
{
return getFoos();
}
}
不幸的是,在同样的情况下,我被迫在我的域实体中放置静态方法。我认为不可能在单独的类中创建InstanceRequest
。
答案 1 :(得分:0)
用于绑定findSmt()
,documentation关于GWT-RPC状态。
RequestFactory服务存根必须 扩展RequestContext并使用 @Service注释来命名 相关服务实施 服务器上的类。方法中的一个 服务存根不返回实体 直接,而是返回子类 的 com.google.gwt.requestfactory.shared.Request。 这允许方法上的 要异步调用的接口 与Request.fire()类似于传递 每个的AsyncCallback对象 GWT-RPC中的服务方法。
示例:
@Service(Foo.class)
public interface FooRequest extends RequestContext {
Request<List<Foo>> findSmt();
}
public interface FooRequestFactory extends RequestFactory {
FooRequest fooRequest();
}
最后,接线
final EventBus eventBus = new SimpleEventBus();
requestFactory = GWT.create(FooRequestFactory.class);
requestFactory.initialize(eventBus);
FooRequest request = requestFactory.fooRequest();
request.findSmt().fire(new Receiver() {
@Override
public void onSuccess(void arg0) {
//My implementation comes here....
}
});
fire()
是您findSmt()
。