我正在使用GWT RequestFactory并希望在服务中传输客户端参数。 应在客户端上创建参数,因为它们不是域模型的一部分,不会存储在数据库中。 不幸的是我没有办法做到这一点,因为只有xxxProxy对象可以用作参数,它们只能在服务器上创建。
我的具体例子:
我想从服务器下载任务,并希望发送带有请求作为参数的过滤器对象,该参数指定要加载的任务对象。
感谢您的帮助!
答案 0 :(得分:3)
您可以使用create()
的{{1}}方法在客户端上创建代理。在您的情况下,您的代理必须是RequestContext
而不是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
}
作为旁注,你写道“只有xxxProxy对象可以用作参数”,这是错误的;你可以很好地使用原始类型(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) {
// ...
}
});
,int
等),它们的包装类型(boolean
,Integer
等),Boolean
, String
,以及Date
或List
(或代理类型)。