Проблема при отправке списка объектов JavaScript в контроллер в Spring MVC - PullRequest
1 голос
/ 24 мая 2019

Я пытаюсь получить список объектов javascript в Java Spring MVC, но когда он прибывает в контроллер, он пуст.

Я много читал о, но я не знаю, как этоработает

Это мой код ajax:

$.ajax({
                    url : 'ajax/abrir_cotizacion',
                    data : {
                        listaunidades: [{
                                idtipounidad: 1, 
                                modelo: 2013, 
                                cantidad: 1, 
                                tipopago: 1,
                                costounidad: 1500000,
                                ivaoperacion: 25000,
                                totaloperacion: 1504000,
                                enganche: 750000,
                                idplazo: 3
                            },
                            {
                                idtipounidad: 2, 
                                modelo: 2012, 
                                cantidad: 2, 
                                tipopago: 2,
                                costounidad: 1500000,
                                ivaoperacion: 25000,
                                totaloperacion: 1504000,
                                enganche: 750000,
                                idplazo: 6
                            }]
                    },
                    type : 'POST',
                    dataType : 'json',
                    success : function(data) {

                    },
                    error : function(xhr, status) {
                        alert('Disculpe, existió un problema');
                    },
                    complete : function(xhr, status) {
                        //alert('Petición realizada');
                    }
                });

И ниже моего контроллера и модели, требуемой для этого.

@ResponseBody
@RequestMapping(value = "/ajax/abrir_cotizacion", method = RequestMethod.POST)
public Object abrircotizacion(Model model, HttpServletRequest request, @ModelAttribute ArrayList<Unidades> listaunidades) {
    try {
        Injector inj = AppInjector.getInjector();
        return new MsgPojo(1, "Se abre la cotización");
    } catch (Exception ex) {
        LoggerUtils.printLog(this.getClass(), Level.SEVERE, ex, null, Thread.currentThread().getStackTrace());
        return new MsgPojo(-1, "Ocurrio un error al cargar los datos. " + ex.toString());
    }
}


public class Unidad {

    private int idtipounidad;
    private int modelo;
    private int cantidad;
    private int tipopago;
    private double costounidad;
    private double ivaoperacion;
    private double totaloperacion;
    private double enganche;
    private int idplazo;

   //getters and setters
}

1 Ответ

1 голос
/ 24 мая 2019

я использую Spring Boot 2.1.4
и я попробовал это, и это работает.

HomeController.class

@RestController
public class HomeController {

    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

    @PostMapping("/test")
    public void test(@RequestBody UserDTO[] userDTO) {
        logger.info(userDTO.length + ""); //expect 2
    }

}

UserDTO.class

@Data
public class UserDTO {

    private String email;
    private String nickname;

}

и я пользуюсь почтальоном .

POST /test? HTTP/1.1
Host: localhost
Content-Type: application/json
cache-control: no-cache
[
    {
        "email": "test@test.co.kr",
        "nickname": "test1"
    },
    {
        "email": "test2@test.co.kr",
        "nickname": "test2"
    }
]

и выход:

2019-05-24 11:04:40.871  INFO 1860 --- [p-nio-80-exec-5] k.c.k.w.w.s.controller.HomeController    : 2

также я отладил, чтобы проверить мой userDTO. адрес электронной почты и никнейм были настроены на параметры, которые я отправил почтальону.

изменение параметра следующим образом:

[
  {
    "idtipounidad": 1,
    "modelo": 2013,
    "cantidad": 1,
    "tipopago": 1,
    "costounidad": 1500000,
    "ivaoperacion": 25000,
    "totaloperacion": 1504000,
    "enganche": 750000,
    "idplazo": 3
  },
  {
    "idtipounidad": 2,
    "modelo": 2012,
    "cantidad": 2,
    "tipopago": 2,
    "costounidad": 1500000,
    "ivaoperacion": 25000,
    "totaloperacion": 1504000,
    "enganche": 750000,
    "idplazo": 6
  }
]

и ваш контроллер:

@ResponseBody
@RequestMapping(value = "/ajax/abrir_cotizacion", method = RequestMethod.POST)
public Object abrircotizacion(Model model, HttpServletRequest request, @RequestBody Unidad[] unidad) {
   ....
}

Я надеюсь, что эта работа .. И попробуй почтальон. Это очень полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...