Как передать несколько параметров в контроллере? - PullRequest
0 голосов
/ 08 ноября 2019

У меня проблемы с передачей нескольких параметров в ресурс GET моего контроллера. Я создал именованный запрос в моем хранилище. Когда я вызываю эту конечную точку GET, она должна выполнить именованный запрос, передав параметры.

Ниже код должен принимать несколько параметров в качестве входных данных, например ID = 1,2,3,4 и т. Д. Он принимает только один вход какparam.

@GetMapping("/message/{Ids}")
    @CrossOrigin(origins = "*")
    public void multidownload(@PathVariable Long[] Ids , HttpServletResponse response)throws Exception {
        List<MessageRepository> messageRepository = Repository.findbyId(Ids);
        String xml = new ObjectMapper().writeValueAsString(messageRepository);
        String fileName = "message.zip";
        String xml_name = "message.xml";
        byte[] data = xml.getBytes();
        byte[] bytes;
        try (ByteOutputStream bout = new ByteOutputStream();
             ZipOutputStream zout = new ZipOutputStream(bout)) {
            zout.setLevel(1);
            ZipEntry ze = new ZipEntry(xml_name);
            ze.setSize(data.length);
            zout.putNextEntry(ze);
            zout.write(data);
            zout.closeEntry();
            bytes = bout.getBytes();
        }
        response.setContentType("application/zip");
        response.setContentLength(bytes.length);
        response.setHeader("Content-Disposition", "attachment; " + String.format("filename=" + fileName));
        ServletOutputStream outputStream = response.getOutputStream();
        FileCopyUtils.copy(bytes, outputStream);
        outputStream.close();
    }

скачанный zip-файл должен содержать несколько записей ID, которые были переданы в качестве параметра при вызове конечной точки GET.

Может кто-нибудь взглянуть на мой код и указать, что нужно изменить?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2019

Вы можете переписать его в Список идентификаторов - `Список идентификаторов

@GetMapping("/message/{Ids}")
    @CrossOrigin(origins = "*")
    public void multidownload(@PathVariable List<Long> Ids , HttpServletResponse response)throws Exception {
        ...
0 голосов
/ 08 ноября 2019

Вы получаете несколько входных параметров в методе запроса POST.

В полезную нагрузку запроса добавьте этот массив целых чисел в полезную нагрузку запроса.

[1,2,3,4,5]

Для достижения той же цели вМетод запроса GET преобразует ваш массив целых чисел в строку.

Пример:

localhost:8080/user/str=1,2,3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...