У меня 2 модели: ContactGroup и Contact. ContactGroup содержит много контактов.
На странице я должен отобразить список групп и количество контактов в группе корреспонденции следующим образом:
- Group Foo (12 контактов)
- Групповая панель (20 контактов)
Итак, на стороне сервера я использовал DTO ContactGroupInfo:
public class ContactGroupInfo {
private Integer contactCount;
private Long id;
private String name;
public Integer getContactCount() { return this.contactCount; }
public Long getId() { return this.id; }
public String getName() { return this.name; }
public void setContactCount(Integer count) { this.contactCount = count; }
public void setId(Long id) { this.id = id; }
public void setName(String name) { this.name = name; }
}
В этом ContactGroupInfo я добавил поле contactCount, которое не является полем в объекте ContactGroup.
А на стороне клиента я использовал ValueProxy:
@ProxyFor(value = ContactGroupInfo.class, locator = ContactGroupService.class)
public interface LightContactGroupProxy extends ValueProxy {
Integer getContactCount();
Long getId();
String getName();
void setContactCount(Integer count);
void setId(Long id);
void setName(String name);
}
Поэтому, когда серверная сторона возвращает клиентской стороне список LightContactGroupProxy, я сохранил этот список в ArrayList для рендеринга в CellTable.
И вот ко мне приходит проблема: когда мне нужно отредактировать имя группы на стороне клиента, я не могу напрямую редактировать объект LightContactGroupProxy.
- Поэтому мне нужно отправить новое имя на сервер, чтобы вернуть новый LightContactGroupProxy с новым именем. Это неэффективно, потому что мне приходится снова пересчитывать контакты (хотя я знаю, что количество контактов не меняется).
- Или мне нужно отправить на сервер количество контактов и новое имя, чтобы создать новый LightContactGroupProxy с новым именем. Я не хочу этого, потому что, если LightContactGroupProxy имеет много других полей, мне нужно отправить много полей.
Я не знаю, почему команды GWT разрабатывают неизменяемый прокси. Итак, пожалуйста, у кого-то есть опыт работы с requestfactory, покажите мне правильный способ обработки ValueProxy, возвращаемого с сервера, чтобы мы могли использовать их для рендеринга и редактирования?
Спасибо