[英]Spring: Nested object does not get deserialized
我正在从 angular 向 spring 发送 POST 请求。 它的反序列化大部分是正确的,但是一个嵌套的 object 被反序列化为一个空的 Object。
我的 Angular 接口如下所示:
// ClientMedicalModal.ts
export interface ClientMedicalModal {
clientMedicalId: number;
client: ClientModel;
medicalEvidence: MedicalEvidence;
}
// ClientModal.ts
export interface ClientModal {
clientId: number;
}
// MedicalEvidenceModal.ts
export interface MedicalEvidenceModal {
B001: string;
B003: string;
B004: string;
}
我的 Java 对象如下所示:
public class ClientMedical implements Serializable {
private Integer clientMedicalId;
private Client client;
private MedicalEvidence medicalEvidence;
// getter and setter
}
public class Client implements Serializable {
private Integer clientId;
// getter and setter
}
public class MedicalEvidence implements Serializable {
private String B001;
private String B003;
private String B004;
public String getB001() {
return B001;
}
public MedicalEvidence setB001(String b001) {
B001 = b001;
}
// all other getter and setter
}
当我从浏览器检查帖子消息时,一切似乎都很好: {"medicalEvidence":{"B001":"Test","B003":"TestMessage","B004":"Whatever"},"client":{"clientId":1}}
在 Spring 中调试我收到请求,有一个 clientId = 1 的 Client-Object,但 ClientEvidence-Object 为空,所有 B00* 字段都是 null。 请参阅此处的调试值
Spring form binding binds the form parameters to respective fields for Client class, but MedicalEvidence is blank, so Spring instantiates a new MedicalEvidence class with all fields having null values. 为什么参数没有绑定到 MedicalEvidence 的 class 字段,而是绑定到客户端的 class (以及我使用相同方式的所有其他类)? 顺便提一句。 如果我只是从 Angular 发送 MedicalEvidence,它也不起作用。 object 参数仍然为空。
尝试使用 b001、b002、.. 作为名称,在您的用例中,第一个字母不应为大写,除非您想使用一些注释。 并使用“这个”。 在setter方法中。
public class MedicalEvidence implements Serializable {
private String b001;
private String b003;
private String b004;
^^^^
public String getB001() {
return b001;
}
public MedicalEvidence setB001(String b001) {
this.b001 = b001;
^^^^^
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.