首页 文章

找不到媒体类型= text / plain的MessageBodyWriter,类型=类java.util.ArrayList,genericType = java.util.List <models.Person>

提问于
浏览
1

我编写了一个泽西REST API方法,它返回一个使用hibernate从mysql后端查询的人员列表 . 这是方法

@Path("Person")
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public List<Person> person()
    {
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        Criteria cr = session.createCriteria(Person.class);
        List persons =  cr.list();
        GenericEntity<List<Person>> list = new GenericEntity<List<Person>>(persons) {};
        tx.commit();
        session.close();
        return persons;

    }

这是我的 MessageBodyWriter

@Provider
@Produces(MediaType.APPLICATION_JSON)
public class PersonMessageBodyWriter implements MessageBodyWriter<Person> {

@Override
public long getSize(Person arg0, Class<?> arg1, Type arg2, Annotation[] arg3, MediaType arg4) {
    // TODO Auto-generated method stub
    return -1;
}

@Override
public boolean isWriteable(Class<?> type, Type arg1, Annotation[] arg2, MediaType arg3) {
    return Person.class.isAssignableFrom(type);
}

@Override
public void writeTo(Person person, Class<?> type, Type type1, Annotation[] arg3, MediaType arg4,
        MultivaluedMap<String, Object> arg5, OutputStream out) throws IOException, WebApplicationException {
    // TODO Auto-generated method stub
        out.write(person.toString().getBytes());
    }

}

当我对上述方法发出get请求时,我得到SEVERE:找不到mediaBileWriter,因为media type = text / plain,type = class java.util.ArrayList,genericType = java.util.List . 有人可以帮我解决这个问题吗?

1 回答

  • 1

    在这种情况下我一直在做的是创建一个包含人员列表的Persons对象 . 可能有一种更好的方法,但如果你的时间紧迫,并希望完成它,那么这应该工作 . 如果它不起作用,那么我的猜测是没有JSON编组工作,在这种情况下你有一个配置问题 .

    import java.util.ArrayList;
    import java.util.List;
    
    public class Persons
    {
        private List<Person> persons = new ArrayList<>();
    
        public List<Person> getPersons()
        {
            return persons;
        }
    
        public void setPersons(List<Person> persons)
        {
            this.persons = persons;
        }
    }
    

相关问题