gpt4 book ai didi

java - 将嵌套对象从 Angular 发布到 Spring REST API 始终为 null

转载 作者:行者123 更新时间:2023-12-01 23:10:32 25 4
gpt4 key购买 nike

我有一个在后端运行的 Spring Boot 应用程序和一个 Angular Web 前端。向服务器发出 GET 请求会正确返回嵌套对象,我可以遍历这些对象并将其显示在网页上。但是,当使用表单发出 POST 请求时,服务器始终将嵌套对象标识为 null,即使我在不​​进行任何更改的情况下传回相同的嵌套对象。

Java(示例代码):两个类都有简单的 JPA 存储库

ObjectA.java

@Entity
public class ObjectA {
@ApiModelProperty(hidden=true)
@Id
@GeneratedValue
private Long id;
private String description;
private ObjectB objectB;
}

ObjectB.java

@Entity
public class ObjectB {
@ApiModelProperty(hidden=true)
@Id
@GeneratedValue
private Long id;
private String description;
}

Angular(示例代码):

ObjectA.ts:

import {ObjectB} from './ObjectB';

export class ObjectA {
constructor(
public description: string,
public objectB: ObjectB
){}
}

ObjectB.ts:

export class ObjectB {
constructor(
public description: string,
){}
}

ObjectA.service.ts:

const headers = new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'Basic ' + btoa('foobar:password')});

...
public save(objA: ObjectA) {
return this.http.post(this.url, objA, {headers});
}

从客户端传递到服务器的 JSON:

{
"description": "A",
"objectB": {
"description": "B"
"_links": {
"self": {
"href": "http://localhost:8080/objectBs/1"
}
}
}
}

我在后端有自定义验证,它在将任何更改保存到数据库之前检查传入的对象。验证将嵌套对象识别为 null,并向客户端返回 HTTP 状态代码 400,以及自定义验证错误消息“需要对象 B”。

最佳答案

我无法发表评论,所以发布作为答案。
您似乎发送了错误的 Content-Type http header 。我猜你发送Content-type: application/json; charset=utf-8 ,但您的后端期望 multipart/form-data .

关于java - 将嵌套对象从 Angular 发布到 Spring REST API 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58378294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com