2012-02-27 37 views
1

請問我可以如何讓RequestFactory填充我的實體代理實體代理的字段呢?RequestFactory不填充我的實體代理的所有字段

這裏是父代理

@ProxyFor(value = Organization.class, locator = PojoLocator.class) 
public interface OrganizationProxy extends EntityProxy 
{ 
    public String getName(); 
    public void setName(String name); 
    public String getAddress(); 
    public void setAddress(String address); 
    public PersonProxy getContactPerson(); 
    public void setContactPerson(PersonProxy contactPerson); 
} 

,你可以看到它包含了另一個代理的領域。這裏是PersonProxy怎麼看起來像

@ProxyFor(value = Person.class, locator = PojoLocator.class) 
public interface PersonProxy extends EntityProxy 
{ 
    public String getName(); 
    public void setName(String name); 
    public String getPhoneNumber(); 
    public void setPhoneNumber(String phoneNumber); 
    public String getEmail(); 
    public void setEmail(String email); 
    public OrganizationProxy getOrganization(); 
    public void setOrganization(OrganizationProxy organization); 
} 

在我RequestContext接口我有方法Request<OrganizationProxy> findOrganizationById(long id)。從數據存儲中獲取真實組織的DAO類設置其contactPerson字段,但在客戶端中始終爲null。事實上RequestFactory從來都不會調用Organization.getContactPerson()。

我的客戶呼叫看起來像這樣

createFactory().contextOrder().findOrganizationById(1).fire(new Receiver<OrganizationProxy>() 
{ 
    @Override 
    public void onSuccess(OrganizationProxy response) 
    { 
     if (response == null) 
     { 
      organizationProxy = orderRequestContext.create(OrganizationProxy.class); 
      organizationProxy.setContactPerson(orderRequestContext.create(PersonProxy.class)); 
     } else 
      organizationProxy = orderRequestContext.edit(response); 

     // Copy the data in the object into the UI 
     driver.edit(organizationProxy); 
    } 

    @Override 
    public void onFailure(ServerFailure error) 
    { 
     createConfirmationDialogBox(error.getMessage()).center(); 
    } 
}); 

缺少什麼我在這裏?我應該手動做點什麼嗎? RequestFactory不是應該填充整個圖嗎?

回答

2

對不起,但我找到了答案。我應該有RTFM。

當查詢服務器時,RequestFactory不會自動在對象圖中填充關係 。爲此,請在請求上使用with() 方法,並將相關屬性名稱指定爲字符串