关于RequestFactory中自定义方法的简单问题

时间:2011-03-24 17:08:10

标签: java gwt requestfactory

我有RequestFactory和一些请求接口

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

我无法弄清楚应该在哪里放置findSmt()实现以及如何与该实现进行连接。

2 个答案:

答案 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()

的电汇。{