Java Spring:将列表从 Ajax 发送到控制器

Java Spring: send list from Ajax to Controller

我正在尝试发送一组 this Json data 在 JSP:

中使用此 Ajax 的数据
$.ajax({
        url:  'agregarSeleccion',
        type: 'POST',
        dataType:'json',
        data: JSON.stringify(lista),
        success:function(dataP){
            //Successs
        error: function (jqXhr) { 
            swal("Error","","error");
        }
   });  

到 Java(Spring 框架)中的这个控制器:

private List<Seleccion> seleccionados = new ArrayList<Seleccion>();

@RequestMapping("/agregarSeleccion")
@ResponseBody
public List<Seleccion> agregar(Seleccion obj) {
    seleccionados.add(obj);
    return seleccionados;
}

“Seleccion” 对象是一个实体,具有我从 Ajax 发送的 JSON 的一些属性,“seleccionados 是一个保存接收到的数组的列表,但是当我发送它时,obj 参数总是 return 一个空对象并且 Ajax 发送错误函数,我想问题是我正在将数组发送到 Object,但我不知道如何解决它

选择对象模型:

public class Seleccion {
    private int idProducto;
    private String nombre;
    private double precio;
    private int cantidad;
    private double totalParcial;
   //Getters and setters
}

尝试使用 ResponseEntity 并像下面的代码片段一样更新您的控制器;

测试数据

[
{
    idProducto : 1,
    nombre : 'Test1',
    precio : 1.5,
    cantidad : 1,
    totalParcial : 2.5
}
]

你的Ajax(我把数据类型改回了json);

$.ajax({
        url:  'agregarSeleccion',
        type: 'POST',
        contentType: "application/json",
        data: JSON.stringify(lista),
        success:function(dataP){
            console.log(dataP);
        },
        error: function (jqXhr) { 
            swal("Error","","error");
        }
   });

你的控制器(注意变量也在方法外声明,添加了allAll方法来添加列表,改变了return最后输入)

List<Seleccion> seleccionados;
@RequestMapping("/agregarSeleccion")
public ResponseEntity<?> agregar(@Valid @RequestBody List<Seleccion> obj) {
    
    seleccionados = new ArrayList<Seleccion>();
    System.out.println("result"+ obj.toString());
    seleccionados.addAll(obj);  
    return new ResponseEntity<>(seleccionados, HttpStatus.OK);
    
}