2011-10-02 86 views
5

是否GWT 2.4支持這種情況下:GWT 2.4.0 RequestFactory多態性

@Entity class MyBase {...} 
@Entity class MyChild1 extends MyBase {...} 
@Entity class MyChild2 extends MyBase {...} 
... 
@ProxyFor(MyBase.class) class MyBaseProxy extends EntityProxy {...} 
@ProxyFor(MyChild1.class) class MyChild1Proxy extends MyBaseProxy {...} 
@ProxyFor(MyChild2.class) class MyChild2Proxy extends MyBaseProxy {...} 
... 
@Service(ArticleBase.class) 
public interface MyBaseRequest extends RequestContext { 
    Request<MyBaseProxy> getStuff(); // MyChild1 here 
} 
... 
Request<MyBaseProxy> getStuffRequest = request.getStuff(); 
getStuffRequest.fire(new Receiver<MyBaseProxy>() { 
    @Override 
    public void onSuccess(MyBaseProxy proxy) { 
     button.setText(((MyChild1Proxy)proxy).getQwerty()); // HERE! 
    } 
}); 

問題是,我無法使它工作。它要麼不支持,要麼我需要在某處添加一些魔術註釋。當我使用具體類型時,一切正常,但如果我使用基礎類型,則不起作用。

您認爲如何?

回答

10

@ExtraTypes固定它:

@Service(ArticleBase.class) 
@ExtraTypes({MyChild1Proxy.class, MyChild2Proxy.class}) 
public interface MyBaseRequest extends RequestContext { 
    Request<MyBaseProxy> getStuff(); // MyChild1 here 
} 
+0

謝謝你,救了我大量的時間 - 是越來越怪異堆棧溢出異常。預計將額外的類型註釋放在基類代理類上(這會導致堆棧溢出異常)... –