Отправка массива объектов в Spring MVC

Я пытаюсь отправить массив объектов на свой весенний контроллер.

Сначала объявляю массив в javascript

var ar = new Array();

Затем я создаю объект с именем и количеством

var obj = { name: "", qty: "" };

Пользователь вводит некоторые данные в поля ввода на странице html. Когда они нажимают кнопку добавления, эти данные будут помещены в объект.

obj = { name: $("#name").val(), qty: $("#qty").val() }

Затем я беру объект и вставляю его в созданный мной массив.

ar.push(obj);

Итак, теперь у меня есть массив объектов, которые я хочу отправить в свой весенний контроллер.

var posting = $.post("<%=request.getContextPath()%>/submitArray.htm", {"ar[]": ar});

В моем весеннем контроллере я запрашиваю параметр

@RequestParam("ar[]") Object[] objectArray

Я получаю результат обратно. Это массив объектов, но я не знаю, как получить имя или количество от этого объекта.

Я открыл переменную в отладчике, и она говорит

[[object Object], [object Object]]

Как мне получить значения name и qty из объекта?

Попробуйте @RequestBody вместо @RequestParam.

31piy 03.08.2018 17:54

@ 31piy Я пробовал $.post("<%=request.getContextPath()%>/submitArray.htm", {"ar[]": ar}); и @RequestBody ReturnObject ar. Я создал класс ReturnObject с двумя переменными private String name; private String qty;. Я получил 415 (неподдерживаемый тип носителя) в консоли Google Chrome после отправки запроса

Jake Perkins 03.08.2018 18:07
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
2
1 077
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Создайте класс java для определения объекта вашей модели, т.е.

public class Model {
    private String name;
    private Double qty;

    //getter setter goes here
}

Затем напишите контроллер отдыха, как показано ниже:

@RestController
public class MyController {
    @PostMapping(value = "/submitArray", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public ResponseEntity process(@RequestBody List<Model> modelList) {
        for (Model model : modelList) {
            System.out.println(model.getName());
            System.out.println(model.getQty());
        } 
    }
}

Теперь разместите свой массив javascript по URL-адресу контроллера с заголовком Content-Type "application / json"

Я ценю отзывы, но, к сожалению, я использую Spring 3.0.6. Следующие аннотации недоступны в вашем ответе @RestController @PostMapping consumes = MediaType.APPLICATION_JSON_UTF8_VALUE. Пока мы говорим, мы выполняем некоторые обновления нашей среды Spring. Однако я могу использовать @RequestBody и успешно отправил обратно один объект после создания класса, соответствующего этому объекту. Теперь мне просто нужно выяснить, как отправить обратно массив этих объектов или список.

Jake Perkins 03.08.2018 18:45

Вы можете игнорировать их, просто реализуйте класс модели и добавьте список с помощью @RequestBody.

Monzurul Haque Shimul 03.08.2018 18:57

Другие вопросы по теме