0

我有带有一些请求接口的 RequestFactory

public interface FooRequest extends RequestContext {
   Request<List<Foo>> findSmt();
}

我不知道我应该在哪里放置findSmt()实现以及我应该如何与该实现进行接线。

4

2 回答 2

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在单独的类中创建一个。

于 2011-03-24T17:33:29.910 回答
0

对于 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().

于 2011-03-24T17:36:51.843 回答