自定義的方法簡單的問題我有RequestFactory一些請求接口關於RequestFactory
public interface FooRequest extends RequestContext {
Request<List<Foo>> findSmt();
}
我想不通,我應該把findSmt()
實施和我應該怎麼辦與實施佈線。
自定義的方法簡單的問題我有RequestFactory一些請求接口關於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
。
非常感謝。這似乎是可行的解決方案。 – 2011-03-24 17:44:45
對於findSmt()
,GWT-RPC狀態下的documentation的綁定。
的RequestFactory服務存根必須 擴展的RequestContext和使用 @Service註解來命名服務器上的 相關服務實現 類。 服務存根中的方法不直接返回實體 ,而是返回 的子類 com.google.gwt.requestfactory.shared.Request。 這允許使用Request.fire()異步調用 接口上的方法 ,類似於將GWT-RPC中的每個 服務方法傳遞給 AsyncCallback對象。
例子:
@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()
。
好的。謝謝。我用其他方法(通過@Riley)。但是這似乎也很有趣。不幸的是,我看不到你在哪裏放置'findSmt()'實現。 – 2011-03-24 17:43:50
@Stas Kurilin,實現在'request.findSmt()。fire()'方法上完成。 – 2011-03-24 17:56:32
'onSuccess'方法是findSmt的結果在客戶端發送的地方,而不是實現findSmt的地方。我認爲你需要在'@Service'註釋指定的類中的服務器上實現findSmt。 findSmt不能在客戶端上實現。 – 2011-03-24 17:58:16
+我不想在我的域實體中使用任何靜態方法。 – 2011-03-24 17:14:46
爲什麼不創建一個繼承** FooRequest接口的類? – 2011-03-24 17:15:19
@精英紳士 - 我應該如何在'FooRequest'和'FooRequestImpl'之間進行綁定? – 2011-03-24 17:17:39