我有一个通用的JAX-RS资源类和我已经定义了一个通用的findAll
方法使用Java-泛型模板类型>
public abstract class GenericDataResource<T extends GenericModel> {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response findAll() {
Query query = em.createNamedQuery(modelClass.getSimpleName()+".findAll");
List<T> list = query.getResultList();
return Response.ok(new GenericEntity<List<T>>(list) {}).build();
}
}
和用户类:
public class User extends GenericModel {
...
}
这里是实例子类的定义:
@Path("users")
public class UserResource extends GenericDataResource<User> {
public UserResource() {
super(User.class);
}
}
我得到以下异常:
com.sun.jersey.api.MessageException: A message body writer for Java class
java.util.Vector, and Java type java.util.List<T>,
and MIME media type application/json was not found exception.
如果我有一个定义的类替代T.如User
像这样:
GenericEntity<List<User>>(list)
然后正常工作。
任何想法,我如何使它与泛型T工作?
超类型令牌的整点是捕获,否则将被删除的一般信息。试图让令牌本身具有通用性就是......适得其反。 – Perception 2013-03-14 11:47:58
我需要“T扩展GenericModel”,因为有一些函数需要在抽象类中访问,例如T.getId() – Emin 2013-03-14 11:52:29