У меня есть 2 модели: ContactGroup и Contact. ContactGroup содержит много контактов.
На странице мне нужно отобразить список групп и количество контактов в группе корреспонденции следующим образом:
- Группа 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 проектируют неизменный прокси. Так что, пожалуйста, у кого-то есть опыт работы с запросом. Пожалуйста, покажите мне правильный способ обработки ValueProxy, возвращенного с сервера, чтобы мы могли использовать их для визуализации и редактирования?
Спасибо