当前位置: 首页 > 知识库问答 >
问题:

将从Javascript发送的列表映射到Java后端

姜俊逸
2023-03-14

我试图将json对象列表从Javascript发送到Spring Boot后端。这是我的函数在前端的外观:

function submit() {
        var toSend = JSON.stringify(toBeAdded);
        console.log(toSend);
        $.post("assets",
            toSend,
            data => {
                populate(data);
                toBeAdded = [];
            });
    }

所以我发送了一个类似:[{“name”:“foo1”,“description”:“bar1”,“value”:“4”},{“name”:“foo2”,“description”:“bar2”,“value”:“10”}]

但我在后端无法捕捉到它:

@RequestMapping(value = "/assets", method = RequestMethod.POST)
    public void insertAssets(List<AssetDto> data, HttpSession session) {
        System.out.println(data);
}

AssetDto看起来像:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class AssetDto implements Serializable {
    private String name;
    private String description;
    private int value;
}

因此,在本例中,我有一个错误(没有为接口java.util.List找到主构造函数或单个公共构造函数,也没有找到默认构造函数)。但我也尝试了使用字符串(我得到null),而使用JSONArray我得到了一个空列表。谁能帮帮我吗?

共有1个答案

羊光辉
2023-03-14

添加内容类型:application/json标题以请求提及您发送的json数据。您应该使用<代码>$。ajax函数自$。post不允许添加标题。

function submit() {
        var toSend = JSON.stringify(toBeAdded);
        console.log(toSend);
        $.ajax({
            url: 'assets',
            type: 'post',
            data: toSent,
            contentType: "application/json; charset=utf-8",
            success: function (data){
                        populate(data);
                        toBeAdded = [];
                     }
        });
    }

在服务器端,在参数之前使用RequestBody注释。

@RequestMapping(value = "/assets", method = RequestMethod.POST)
public void insertAssets(@RequestBody List<AssetDto> data, HttpSession session) {
    System.out.println(data);
}
 类似资料:
  • 我有一个实体,看起来像这样: 输入数据是一个

  • 我有这样的收藏:<代码>地图 所以返回将是:

  • ...但我得到: 我不知道如何应用这些信息。首先,我认为我需要为列表声明一些额外的映射(在同一个映射器类中),所以MapStruct知道如何像这样映射列表类型的每个字段: ...但我收到错误消息

  • 假设我有一个函数,它接受两个参数并返回一个值,那么可以将映射转换为流中的列表作为非终端操作吗?我能找到的最近的方法是使用地图上的forEach创建实例并将其添加到预定义列表中,然后从该列表中启动一个新流。还是我错过了什么? 经典的“在一长串单词中找出3个最常出现的单词” (现在我想流式处理该地图的入口集)

  • 我正在Play with Scala中开发一个REST服务器,在某些时候需要请求一个或多个其他Web服务的数据。根据这些服务的响应,服务器必须编写一个统一的结果供以后使用。 例子: 需要执行 上的事件 C。为了执行事件 C,还必须 上的事件 A 上的事件 B。 事件C有一个< code>Seq(www.anotherplace.com,www.athirdplace.com),我想从这个Seq开始

  • seleccion“对象它是一个实体,具有我从Ajax发送的JSON的一些属性,”seleccionados“是一个列表,保存接收到的数组,但当我发送它时,obj参数总是返回一个空对象,Ajax发送错误函数,我认为问题是我在向对象发送数组,但我不知道如何解决它 选择对象模型: