Вы можете очень хорошо создавать прокси на клиенте, используя create()
метод вашего 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
}
...
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 могут использоваться в качестве параметров», что неверно;Вы можете очень хорошо использовать примитивные типы (int
, boolean
и т. д.), их типы-оболочки (Integer
, Boolean
и т. д.), String
, Date
и List
или Set
из них (или типы прокси).