#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/…"
}
]
}