2012-02-27 32 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() 方法,并将相关属性名称指定为字符串