如何在GWT中使用RequestFactory时排除属性

时间:2012-08-27 14:22:47

标签: hibernate gwt requestfactory

我使用RequestFactory从服务器检索对象列表。现在我想排除可以包含长文本的对象的“description”(String)属性。

在运行时的RequestFactory中有没有办法做到这一点?

这就是我检索列表的方法

    collectcontextProvider.get().getListObject().fire(
    new Receiver<List<ObjectProxy>>() {
    @Override
    public void onSuccess (List<ObjectProxy> objectList) {
        //display the list
        }           

        @Override
        public void onFailure(ServerFailure error) {
            //Error
          }
        });

我使用Hibernate

1 个答案:

答案 0 :(得分:0)

假设您想在应用程序的其他位置使用描述字段,您将需要一个不公开该属性的精简代理,当然还有一个返回此类代理列表的服务方法。

@ProxyFor(value=MyObject.class, locator=MyLocator.class)
interface MyObjectLiteProxy extends EntityProxy {
   // all properties but 'description'
}

@ProxyFor(value=MyObject.class, locator=MyLocator.class)
interface MyObjectProxy extend MyObjectLiteProxy {
   String getDescription();
}

@Service(MyService.class)
interface CollectContext extends RequestContext {
   Request<List<MyObjectLiteProxy>> getListObjectLite();

   Request<List<MyObjectProxy>> getListObject();
}

实际上,您甚至可以更进一步使用相同的MyService实现2 RequestContext s:

@Service(MyService.class)
interface CollectLiteContext extends RequestContext {
   Request<List<MyObjectLiteProxy>> getListObject();
}

@Service(MyService.class)
interface CollectContext extends RequestContext {
   Request<List<MyObjectProxy>> getListObject();
}