我有带有一些请求接口的 RequestFactory
public interface FooRequest extends RequestContext {
Request<List<Foo>> findSmt();
}
我不知道我应该在哪里放置findSmt()
实现以及我应该如何与该实现进行接线。
我有带有一些请求接口的 RequestFactory
public interface FooRequest extends RequestContext {
Request<List<Foo>> findSmt();
}
我不知道我应该在哪里放置findSmt()
实现以及我应该如何与该实现进行接线。
您可以使用@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
在单独的类中创建一个。
对于 Binding,有关 GWT-RPCfindSmt()
的文档说明。
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()
.