Отправить массив JSON и передать массив JSON в весенний контроллер MVC - PullRequest
1 голос
/ 21 марта 2019

Я пытаюсь передать данные 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;
}

Класс DownloadItem

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 Ответ

0 голосов
/ 24 марта 2019

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

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

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;

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

Я проверил это в почтальоне . Вот пример ввода вывода. 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/…"
        }
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...