параметры клиента в GWT RequestFactory - PullRequest
0 голосов
/ 15 сентября 2011

Я использую GWT RequestFactory и хочу перенести параметры на стороне клиента в сервис.Параметры должны быть созданы на клиенте, потому что они не являются частью модели предметной области и не будут храниться в базе данных.К сожалению, я не нашел способа сделать это, потому что в качестве параметров можно использовать только объекты xxxProxy, и их можно создавать только на сервере.

Мой конкретный пример:

Я хочу загрузить задачисервер и хотите отправить объект фильтра с запросом в качестве параметра, который указывает загружаемые объекты задачи.

Спасибо за помощь!

1 Ответ

3 голосов
/ 15 сентября 2011

Вы можете очень хорошо создавать прокси на клиенте, используя 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 из них (или типы прокси).

...