возврат списка <String>из веб-сервиса Rest - PullRequest
0 голосов
/ 27 апреля 2020

Iam Learning REST webservice. Я написал очень простой c код для возврата списка из веб-службы. ниже приведен фрагмент кода

@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();

    }

Но когда я запускаю код, я все равно получаю ту же ошибку, что и ниже

MessageBodyWriter не найден для типа носителя = text / plain, type = class java .util.ArrayList, genericType = java .util.List.

Почему я получаю ту же ошибку, несмотря на реализацию messagebodywriter

1 Ответ

1 голос
/ 27 апреля 2020
@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; устраняет ошибку.

...