【问题标题】:Unable to create a ValueProxy无法创建 ValueProxy
【发布时间】:2011-11-08 03:03:56
【问题描述】:

我正在尝试创建一个ValueProxy,其中包含有关用户正在执行的搜索的一些基本信息。出于某种原因,GWT 希望它成为一个 EntityProxy,但我不明白为什么(这个类成为一个 EntityProxy 也没有意义)。

// FilterProxy extends ValueProxy
@ProxyFor(DayFilter.class)
public interface DayFilterProxy extends FilterProxy {

    void setFilterValue(Date day);
    Date getFilterValue();
}

public class DayFilter extends Filter {

    public DayFilter() {
        setOperator(FilterOperator.GREATER_THAN_OR_EQUAL);
        setField("dateRequested");
    }

    public void setFilterValue(Date date) {
        this.value = date;
    }

    public Date getFilterValue() {
        return value;
    }
}

public interface PaginationRequest<T> extends RequestContext {

    Request<List<T>> paginate(int offset, int limit, String sortColumn,
            boolean isSortAscending, List<FilterProxy> filters);

    Request<Integer> count(List<FilterProxy> filters);
}

@Service(value=TripService.class, locator=SchedgyServiceLocator.class)
public interface TripRequest extends PaginationRequest<TripProxy> {

    Request<TripProxy> save(TripProxy trip);
}

在将其发送回服务器的活动中:

// Request is a TripRequest
DayFilterProxy filter = request.create(DayFilterProxy.class);

这会导致:

java.lang.AssertionError: com.schedgy.trip.dao.filter.trip.proxy.DayFilterProxy is not an EntityProxy type
    at com.google.web.bindery.requestfactory.shared.impl.IdFactory.asEntityProxy(IdFactory.java:66)
    at com.google.web.bindery.requestfactory.shared.impl.IdFactory.createId(IdFactory.java:229)
    at com.google.web.bindery.requestfactory.shared.impl.IdFactory.allocateId(IdFactory.java:41)
    at com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext.create(AbstractRequestContext.java:478)
    at com.schedgy.trip.client.activity.TripsActivity.getFilters(TripsActivity.java:56)

有什么想法吗?它必须是显而易见的,我只是忽略了,因为我有 ValueProxies 在代码的其他地方工作。

【问题讨论】:

    标签: java gwt requestfactory


    【解决方案1】:

    难道你的 DayFilterProxy 根本没有从 RequestContext 中引用?

    【讨论】:

    • 是的,我认为是这样。我只引用 RequestContext 中的基本 FilterProxy 类型。我认为使用 GWT 2.4 我们可以在请求工厂中使用多态参数?
    • 你必须添加一个 @ExtraTypes 注释然后引用它们:code.google.com/p/google-web-toolkit/wiki/…
    • @Brad 我必须添加公共接口 PaginationRequest。如果我不这样做,我会收到错误“java.util.List 不能在此处使用”。如果你有一个 EntityProxy 而不是 ValueProxy,也是一样的。我正在使用 GWT 2.5.1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 2022-12-11
    • 2015-09-16
    • 2021-04-18
    • 2014-11-21
    • 2018-05-12
    相关资源
    最近更新 更多