2017-01-07 3 views
2
//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; 
    } 

} 

Всякий раз, когда я попал в службу я получаю эту ошибку как нижеКак вернуть ArrayList в Rest Webservice

сообщение тело писателя для класса java.util.ArrayList Java и Java типа Java. util.ArrayList и MIME тип носителя текст/обычный не был найден

+0

Этот статический arraylist не является хорошей идеей, что произойдет, если два запроса для '/ test/new/name' будут получены в одно и то же время? –

+0

Что касается сообщения об ошибке, используемая структура не знает, как сделать ** текст ** из 'ArrayList', это проблема –

+0

Что писать в @produces? –

ответ

1

Вы не можете использовать ArrayList и производить TEXT_PLAIN. Вам придется использовать JSON. Чтобы настроить запись тела JSON в jax-rs, вам необходимо предоставить @Provider для ObjectMapper. Here's an example:

0

Я думаю, вам нужна реализация mapper, которая помогает в сериализации и десериализации. Без этого он не знает, как преобразовать arraylist в текст/plain или application/json или, если на то пошло, любой другой MIME-тип.

, если вы имеете дело с приложением/json, jackson библиотека работает как действительно хороший картограф. У него есть программа для чтения сообщений и комментатор сообщений, чтобы вы могли выполнять трудную работу.

У вас может быть способ предоставить карту для ваших услуг по отдыху (как поставщика услуг), в некоторой реализации он выбирает себя, если вы используете jsonson jar, который я помню при использовании resteasy.

+0

Я новичок в этом, не могли бы вы написать код для mapper? Спасибо –

+0

В большинстве случаев, когда вы включаете банку джексона, автоматически регистрируется https://github.com/FasterXML/jackson-jaxrs-providers/, поскольку ссылка говорит, что код, возможно, не понадобится, тем более здесь пример из них с трикотажем http://www.mkyong.com/webservices/jax-rs/json-example-with-jersey-jackson/ –

+0

Я включил эти банки и написал, как показано ниже: @POST \t @Path ("/ новый/{имя}") \t @Produces (MediaType.APPLICATION_JSON) \t общественного ArrayList дисплей (@PathParam ("имя") имя String) { \t \t al.clear(); \t \t Todo td = new Todo(); \t \t td.setName (имя); \t \t al.add (td.getName()); \t \t return al; \t} –

Смежные вопросы