Rest API не может вернуть ArrayList объекта, который имеет состав другого объекта - PullRequest
0 голосов
/ 03 июля 2018

Мои классы POJO такие же

1

/*crating MesageModel like this **/
/** ==========================================================================**/

     package tech.sach.webapp.webserve.subpack;

    import javax.xml.bind.annotation.XmlRootElement;

        import tech.sach.webapp.webserve.link.Link;

        @XmlRootElement
        public class MessageModel{

            int mesageid;
            String mesgForm;
            String name;


            Link links;    //id i comment this it works fine

            public MessageModel() {
            }

            public MessageModel(int id,String a,String b,Link link )
            {
                this.mesageid=id;
                this.mesgForm=a;
                this.name=b;
                this.links=link;
            }

            public MessageModel(int id,String a,String b )
            {
                this.mesageid=id;
                this.mesgForm=a;
                this.name=b;
            }


            public int getMesageid() {
                return mesageid;
            }

            public void setMesageid(int mesageid) {
                this.mesageid = mesageid;
            }

            public String getMesgForm() {


                return mesgForm;
            }

            public void setMesgForm(String mesgForm) {
                this.mesgForm = mesgForm;
            }

            public String getName() {
                return name;
            }

            public void setName(String name) {
                this.name = name;
            }

            public Link getLinks() {
                return links;
            }

            public void setLinks(Link links) {
                this.links = links;
            }   
        }

2.Мой второй класс POJO

  /*Link is the object used in MessageModel  */ 

      package tech.sach.webapp.webserve.link;

            public class Link {

                String url;
                String rel;

                public Link(String url,String rel) {
                    this.url=url;
                    this.rel=rel;
                }
                public String getUrl() {
                    return url;
                }
                public void setUrl(String url) {
                    this.url = url;
                }
                public String getRel() {
                    return rel;
                }
                public void setRel(String rel) {
                    this.rel = rel;
                }       

            }

И я пытаюсь отправить ответ, как этот, используя Rest JAX-RS API, как это.

Ниже указан фактический ресурс отдыха, который я пытаюсь вызвать.

Возвращение Arraylist

   package tech.sach.webapp.webserve.subpack;

        import java.net.URI;
        import java.net.URL;
        import java.util.ArrayList;
        import java.util.List;

        import javax.inject.Scope;
        import javax.ws.rs.ApplicationPath;
        import javax.ws.rs.Consumes;
        import javax.ws.rs.GET;
        import javax.ws.rs.POST;
        import javax.ws.rs.Path;
        import javax.ws.rs.Produces;
        import javax.ws.rs.core.Context;
        import javax.ws.rs.core.MediaType;
        import javax.ws.rs.core.UriInfo;
        import javax.xml.bind.annotation.XmlRootElement;

        import tech.sach.webapp.webserve.link.Link;


        @Path("subpack")
        @Consumes(MediaType.APPLICATION_JSON)
        @Produces(MediaType.APPLICATION_JSON)
        public class SubpackageClassCall {
        /*Creating arraylist*/  
            ArrayList<MessageModel> aArr=new ArrayList<MessageModel>();

           /*  Getting response*/
            @GET
            public ArrayList<MessageModel> getSubpack()
            {

                //Creating arraylikst here with dynamic MessageModel object

                aArr.add(new MessageModel(1, "sac", "sdf"));
                aArr.add(new MessageModel(2, "adsdsac", "csxcxcdf"));
                aArr.add(new MessageModel(3, "sadasdcxcxcsac", "swwwwwdf"));
                return aArr;
            }

            }

Я пытаюсь позвонить "http://localhost:8080/webserve/webapi/subpack" в почтальоне или браузере и получаю следующую ошибку

   **"SEVERE: MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=java.util.ArrayList<tech.sach.webapp.webserve.subpack.MessageModel>."**

Таким образом, в классе SubpackageClassCall я динамически создаю объект MessageModel, но я не делаю ничего, связанного с составленным объектом Link.

Если я удалю этот составной объект 'Link' из 'MessageModel', то он будет работать нормально.

Но почему он не работает, когда я включаю объект 'Link' в 'MessageModel'?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...