gpt4 book ai didi

java - 找不到 Media type=text/plain、type=class java.util.ArrayList、genericType=java.util.List 的 MessageBodyWriter

转载 作者:行者123 更新时间:2023-11-30 07:43:49 25 4
gpt4 key购买 nike

我编写了一个 jersey 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 请求时,我得到严重:未找到 Media type=text/plain、type=class java.util.ArrayList、genericType=java.util.List 的 MessageBodyWriter。有人可以帮我解决这个问题吗?

最佳答案

在这种情况下,我总是做的是创建一个包含人员列表的 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;
}
}

关于java - 找不到 Media type=text/plain、type=class java.util.ArrayList、genericType=java.util.List<models.Person> 的 MessageBodyWriter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34228246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com