繁体   English   中英

Spring:嵌套的 object 未反序列化

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM