首页 > 解决方案 > 如何将 javascript 数组发送到 Spring MVC 控制器

问题描述

我正在尝试将 javascript 数组发送到 Spring MVC 控制器..但我得到空值..

我的javascript代码:

for (var n = 1; n < rowCount; n++) {
            cells = rows[n].cells;
            data.push([
                cells[0].firstElementChild.checked,
                cells[1].firstElementChild.value,
                cells[2].firstElementChild.value,
                cells[3].firstElementChild.value,
                cells[4].firstElementChild.value
           ]);
}

$.ajax({
        url: 'addDetails.html',
        type:"POST",
        data:
{promo : data}

我的 Spring MVC 控制器请求映射:

@RequestMapping("/addDetails")
    public @ResponseBody void addEntity(
            @RequestParam(value="promo") List<String> promo) throws IOException {

我在 Requestmapping 中没有得到任何价值的促销。请帮助我..谢谢!

标签: javascriptjavaspring

解决方案


POST Body 可以在RequestBodynot in 中接收RequestParam,其次,如果你传递你的数组,就像{promo: data}它会被转换为HashMap或者一些POJOObject 而不是数组列表,所以直接传递数组,比如:

$.ajax({
        url: 'addDetails.html',
        type:"POST",
        data:data

并使您的控制器像:

@RequestMapping("/addDetails", method = {RequestMethod.POST})
public @ResponseBody void addEntity(
            @RequestBody List<String> promo) throws IOException {

更新 更多数据,您可以创建一个 POJO 类:

public class MyData{
    private String lname;
    private String lstate;
    private String lrta;
    private String lse;
    private List<String> promo;

   ... Getters and Setters
}

你的控制器应该是:

@RequestMapping("/addDetails", method = {RequestMethod.POST})
public @ResponseBody void addEntity(
                @RequestBody MyData myData) throws IOException {

推荐阅读