Отправка массива json и передача массива json в контроллер spring mvc

#json #spring #spring-mvc

#json #spring #spring-mvc

Вопрос:

Я пытаюсь передать данные Json, такие как показано ниже

 for (var t = 0; t < files.length; t    ){
    contents.push({"name":files[t].name,"selected":true,"url":files[t].url});               
}
  

Контроллер

 @RequestMapping(value = "/ajax/candidate/onboarding/multidownload",method = RequestMethod.POST,consumes = "application/json")
public @ResponseBody RequestTTT downloadCandidateDoc(HttpServletResponse res,@RequestBody List<DownloadItem> files) {
    requestttt.setFiles(files);
    return requestttt;  
}
  

Класс RequestTTT

 class RequestTTT {
    Long candidateId;
    List<DownloadItem> files;
}
  

Элемент загрузки класса

 public class DownloadItem {
    private String name;
    private boolean selected;
}
  

Результат, который я имею, это :

400 Неверных запросов с функцией

 $.ajax({
  type : "POST",
  url : "${contextPath}/ajax/candidate/onboarding/multidownload",
  data : JSON.stringify(data),
  dataType: 'json',
  headers : {
    'Accept' : 'application/json',
    'Content-Type' : 'application/json'
  },
  cache: false,
  timeout: 100000,
  success: function (data) {
    console.log("SUCCESS : ", data);
  },
  error: function (e) {
    console.log("ERROR : ", e);
  }
})
  

Комментарии:

1. Не могли бы вы, пожалуйста, опубликовать образец запроса Json?

2. [{«name»: «logo.png», «selected»:true, «url»: » 192.168.84.30/static/candidate/india/1/120170623163651logo.png «},{«name»:»Chrysanthemum.jpg «, «выбрано»: true,»url»: » 192.168.84.30/static/candidate/india/1/… «},{«name»:»hgignore_global.txt «, «выбрано»: true, «url»: » 192.168.84.30/static/candidate/india/1/… «},{«name»: «logo.png», «выбрано»: true, «url»: » 192.168.84.30/static/candidate/india/1/120170623163651logo.png «}]

3. @Md.SajedulKarim Какое тело ответа вы получаете вместе с 400? Видите ли вы какое-либо сообщение об ошибке в журналах вашего приложения spring?

4. @Huynh.tdt, пожалуйста, проверьте мой ответ. Я добавил рабочий код. Я проверил это в Postman. Спасибо 🙂

Ответ №1:

Извините за поздний ответ.

Класс элемента списка запросов:

 public class DownloadItem {

    private String name;
    private String selected;
    private String url;

    /*{
        "name": "logo.png",
            "selected": true,
            "url": "192.168.84.30/static/candidate/india/1/120170623163651logo.png"
    }*/


    // Getter
    // Setter
}
  

Класс ответа:

 import java.util.List;


public class Response {
    private Long candidateId;
    private List<DownloadItem> files;


    // Getter
    // Setter
}
  

Код вашего контроллера будет приведен ниже:

 @PostMapping("ajax/candidate/onboarding/multidownload")
public ResponseEntity<Response> downloadCandidateDoc(@RequestBody List<DownloadItem> request) {

    Response response=new Response();
    response.setCandidateId(11L);
    response.setFiles(request);

    return new ResponseEntity<>(response, HttpStatus.OK);

}
  

Вот импорт:

 import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
  

Редактировать:

Я проверил это в postman. Вот пример ввода-вывода. http://IP:PORT/YOUR_CONTEXT_PATH/ajax/candidate/onboarding/multidownload

Запросить Json

 [
  {
    "name": "logo.png",
    "selected": true,
    "url": "192.168.84.30/static/candidate/india/1/120170623163651logo.png"
  },
  {
    "name": "Chrysanthemum.jpg",
    "selected": true,
    "url": "192.168.84.30/static/candidate/india/1/…"
  }
]
  

Ответ:

 {
    "candidateId": 11,
    "files": [
        {
            "name": "logo.png",
            "selected": "true",
            "url": "192.168.84.30/static/candidate/india/1/120170623163651logo.png"
        },
        {
            "name": "Chrysanthemum.jpg",
            "selected": "true",
            "url": "192.168.84.30/static/candidate/india/1/…"
        }
    ]
}