//Main service
@Path("/test")
public class ReturnMultiple {
public static ArrayList<String> al = new ArrayList<String>();
@POST
@Path("/new/{name}")
@Produces(MediaType.TEXT_PLAIN)
public ArrayList<String> display(@PathParam("name") String name) {
al.clear();
Todo td = new Todo();
td.setName(name);
al.add(td.getName());
return al;
}
}
// This is Pojo
public class Todo {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
每当我点击服务时,我都会收到如下错误
Java类java.util.ArrayList和Java的消息体编写器 输入java.util.ArrayList和MIME媒体类型 找不到text / plain
答案 0 :(得分:1)
您不能使用ArrayList并生成TEXT_PLAIN。你必须使用JSON。要在jax-rs中设置JSON消息体写入,您需要为ObjectMapper提供@Provider。 Here's an example:
答案 1 :(得分:0)
我想,你需要一个mapper实现,它有助于序列化和反序列化。如果没有它,它不知道如何将arraylist转换为text / plain或application / json,或者就任何其他MIME类型而言。
如果您正在处理application / json,jackson库可以作为非常好的映射器工作。它有messagebodyreader和messagebodywriter供你完成这项艰巨的工作。
你可能有办法为你的休息服务(作为提供者)提供一个映射器,在某些实现中,如果你使用我记得在使用resteasy时使用的jackson jar,它会自行选择。