0

我在 gwt 中与请求工厂作斗争。我可以让它与泛型和多态类一起工作。看这里:

具有泛型的类型化类的 RequestFactory 客户端继承

Gwt 请求工厂。客户端的泛型和继承

RequestFactory 实体的参数:List<OfOtherEntity> 在客户端为空。服务器上没问题

我考虑改用restygwt作为传输层。这是一个新的应用程序,所以没有太多要重写的。我认为 RF 会满足我的需要,不幸的是我无法让它工作。所以我在考虑Resty。

请告诉我它是否适用于下面这样的泛型和多态类:

@MappedSuperclass
public  class GenericModel<T extends GenericModel<T>> implements Identifiable, Versionable {
    getId();
    getVersion();
}

@MappedSuperclass
public abstract class GenericDictionaryModel<T extends GenericModel<T>> extends GenericModel<T> {        getName();
    getActive();
}

@Entity class VocabularyDictionaryModel extends GenericDictionaryModel {
    someCustomeMethod();
}


public class GenericDao<T extends GenericModel<T>> {
    public List<GenericModel<T>> getList() {
        return JPA.em().createQuery("FROM " + entityClass.getSimpleName()).getResultList();
    }
}



public class GenericDictionaryDao<T extends GenericDictionaryModel<T>> extends GenericDao<T>{
    public List<GenericDictionaryModel<T>> getListOrderedByName() {
        try {
            return JPA.em()
                      .createQuery("FROM " + entityClass.getSimpleName() + " ORDER BY name")
                      .getResultList();
        } catch (ClassCastException e) {
            return new LinkedList<GenericDictionaryModel<T>>();
        }
    }
}
4

1 回答 1

0

是的,在 Resty 中使用泛型应该不会有问题。您将不得不稍微使用 Jackson 注释以使它们正确地继承。主要是@JsonSubTypes@JsonTypeName

请记住,您将不得不或多或少地自己处理错误。与 rf 相比,让其余应用程序工作的代码要多得多,但恕我直言,它使您的 API 在更多平台类型之前更具可移植性。

这是您所要求的示例。我经常使用单元测试来解决一些极端情况。

https://github.com/resty-gwt/resty-gwt/blob/master/restygwt/src/test/java/org/fusesource/restygwt/client/basic/ParameterizedTypeDTO.java

于 2015-12-01T18:30:14.977 回答