【问题标题】:returning List<String> from a Rest webservice从 Rest web 服务返回 List<String>
【发布时间】:2020-04-28 02:21:08
【问题描述】:

我正在学习 REST 网络服务。我编写了一个非常基本的代码来从 web 服务返回一个列表。下面是代码sn-p

@Path("hello")
public class Hello {


    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public List<String> greeting() {

        List<String> greeting = new ArrayList<>();
        greeting.add("Hello World");
        greeting.add("How are you");
        greeting.add("Hope you are doing good");
        greeting.add("Hey WhatsApp");
        greeting.add("Take care");
        greeting.add("Perform well");


        return greeting;
    }

}

messagebodywriter 实现如下

@Provider
@Produces(MediaType.TEXT_PLAIN)
public class ListMessageBodyWriter implements MessageBodyWriter<List<String>>{

    @Override
    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {        
        System.out.println("here in the isWriteable");

        return type == List.class;
    }

    @Override
    public void writeTo(List<String> t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType,
            MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
            throws IOException, WebApplicationException {

        System.out.println("here in the writeTo");
        System.out.println("t="+t);
        System.out.println("size of t "+t.size());

        Writer writer = new PrintWriter(entityStream);
        writer.write("list of string will be returned later");
        writer.flush();
        writer.close();

    }

但是当我运行代码时,我仍然得到与下面相同的错误

找不到媒体 type=text/plain、type=class java.util.ArrayList、genericType=java.util.List 的 MessageBodyWriter。

为什么尽管实现了 messagebodywriter 却得到同样的错误?

【问题讨论】:

  • 请编辑问题并显示更多错误堆栈调用
  • 这是我得到的唯一错误行。你认为我的 messagebodywriter 实现是否正确?

标签: java rest


【解决方案1】:
@Override
    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {        
        System.out.println("here in the isWriteable");

        return type == List.class;
    }

返回类型 == List.class; 更改为

返回类型 == ArrayList.class; 解决了错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    相关资源
    最近更新 更多