2011-09-15 49 views
0

我正在使用GWT RequestFactory並希望傳輸服務中的客戶端參數。 應該在客戶端上創建參數,因爲它們不是域模型的一部分,也不會存儲在數據庫中。 不幸的是,我發現沒有辦法做到這一點,因爲只有xxxProxy對象可以用作參數,它們只能在服務器上創建。GWT中的客戶端參數RequestFactory

我具體的例子:

我想從服務器下載任務,要發送一個過濾器對象與作爲參數的要求,指定要加載的任務對象。

感謝您的幫助!

+0

嗨Stefan。如果托馬斯的答案解決了您的問題,請將其標記爲正確。反饋保持了計算器的輪子轉動。 –

回答

3

您可以使用RequestContextcreate()方法在客戶端上非常好地創建代理。在你的情況下,你的代理必須是ValueProxy而不是EntityProxy。您不必「存儲」值代理(與實體代理相反)。

我的確和您的用例完全相同,並且工作得非常好。

@Service(MyService.class) 
interface MyRequestContext extends RequestContext { 
    Request<List<TaskProxy>> findTasks(FilterProxy filter); 
} 

@ProxyFor(Filter.class) 
interface FilterProxy extends ValueProxy { 
    // your getters and setters here 
} 

...

MyRequestContext ctx = ...; 
FilterProxy filter = ctx.create(FilterProxy.class); 
filter.setXxx(...); 
// set your other filter 
ctx.findTasks(filter).fire(new Receiver<List<TaskProxy>>() { 
    @Override 
    public void onSuccess(List<TaskProxy> tasks) { 
    // ... 
    } 
}); 

作爲一個側面說明,你寫了「只xxxProxy對象可以作爲參數」,這是錯誤的;可以很好地使用原始類型(intboolean等),它們的包裝類型(IntegerBoolean等),StringDateList或它們(或代理類型)的Set