Я пытаюсь освоить новый RequestFactory API, и мне действительно тяжело.
Модели моего домена состоят из Staffer
, Person
и Office
. У сотрудника есть Человек и Офис как поля.
Когда я пытаюсь сохранить обновления для экземпляра Staffer в GWT, на серверном вызове persist()
я вижу обновления в его примитивных / строковых полях, но не вижу обновлений для прикрепленных Person
или Office
объектов. Вот как я влияю на правки со стороны GWT:
private void persistStafferDetails()
{
CRMRequestFactory.StafferRequest stafferRequest = requestFactory.stafferRequest();
staffer = stafferRequest.edit(staffer);
PersonProxy person = staffer.getPerson();
person.setFirstName(firstNameField.getText());
person.setLastName(lastNameField.getText());
staffer.setPersonalEmail(personalEmailField.getText());
staffer.getHomeLocation().setStreetAddress(addressField1.getText());
staffer.getHomeLocation().setCity(cityField.getText());
staffer.getHomeLocation().setPostalCode(postalField.getText());
staffer.getHomeLocation().setProvince(provinceDropDown.getValue(provinceDropDown.getSelectedIndex()));
stafferRequest.persist().using(staffer).fire();
}
Вот прокси:
@ProxyFor(Staffer.class)
public interface StafferProxy extends EntityProxy
{
Long getId();
PersonProxy getPerson();
void setPerson(PersonProxy person);
OfficeProxy getOffice();
void setOffice(OfficeProxy office);
String getHomePhone();
void setHomePhone(String homePhone);
String getCellPhone();
void setCellPhone(String cellPhone);
String getPersonalEmail();
void setPersonalEmail(String personalEmail);
LocationProxy getHomeLocation();
void setHomeLocation(LocationProxy homeLocation);
}
@ProxyFor(Person.class)
public interface PersonProxy extends EntityProxy
{
Long getId();
void setId(Long id);
String getFirstName();
void setFirstName(String firstName);
String getLastName();
void setLastName(String lastName);
}
@ProxyFor(Office.class)
public interface OfficeProxy extends EntityProxy
{
Long getId();
String getName();
void setName(String name);
}
А мой CRMRequestFactory выглядит так:
public interface CRMRequestFactory extends RequestFactory
{
@Service(Staffer.class)
public interface StafferRequest extends RequestContext
{
InstanceRequest<StafferProxy, Void> persist();
Request<List<StafferProxy>> getAll();
Request<StafferProxy> findStaffer(Long id);
}
public StafferRequest stafferRequest();
@Service(Person.class)
public interface PersonRequest extends RequestContext
{
InstanceRequest<PersonProxy, Void> persist();
Request<List<PersonProxy>> getAll();
Request<PersonProxy> findPerson(Long id);
}
public PersonRequest personRequest();
@Service(Office.class)
public interface OfficeRequest extends RequestContext
{
InstanceRequest<OfficeProxy, Void> persist();
Request<List<OfficeProxy>> getAll();
Request<OfficeProxy> findOffice(Long id);
}
public OfficeRequest officeRequest();
}