繁体   English   中英

如何将多个对象从Angular2发送到Java Spring后端

[英]How to send multiple objects from Angular2 to Java Spring backend

我正在尝试将Angular 2中的两个对象( CustomerAcctProduct )发送到静态服务(Java Spring)。 我正在使用一个名为CustProduct的包装对象,其中有两个对象CustomerAcct和Product。 后端CustomerAcct对象以某种方式为null,但Product对象不是。

这是我的代码:

界面:

CustProduct类别:

export class CustProduct { public ca: CustomerAcct; public prod: Product }

服务:

addProductToCustomer(cp: CustProduct): Observable<Boolean> {

     let body = JSON.stringify(cp);
     let headers = new Headers({'Content-Type': 'application/json'});
     let options = new RequestOptions({ headers: headers });
     let url = 'my-url';

     return this.http.post(my-url, body, options)
                     .map(this.extractData)
                     .catch(this.hadnleError);
}

后端代码:

java classes:
@Entity
@Table(name="CUSTOMER_ACCT")
public class CustomerAcct {
    @Id
@Column(name="CUSTOMER_ACCT_ID")
private long CUSTOMER_ACCT_ID;
@Column (name="CUSTOMER_NAME")
private long CUSTOMER_NAME;

other additional fields
}

@Entity
@Table(name="PRODUCT")
public class Product {
@Id
@Column(name="PRODUCT_ID")
private long PRODUCT_ID;
@Column(name="PROD_DESC")
private String PROD_DESC;

other additional fields
  }

public class CustomerProduct {
CustomerAcct customerAcct;
Product product;
}

public boolean addProductToCustomer(@RequestBody CustomerProduct cp) {
       CustomerAcct ca = cp.customerAcct;
       Product prod = cp.product;

       // Here CustomerAcct is null, but I do see data in Product object
}

我不明白为什么它会丢弃CustomerAcct对象。 如果我自己在@RequestBody发送CustomerAcct对象,则它有效,但在包装对象中不起作用。 我在GUI和后端上的类定义是相同的。

感谢您的帮助。

您正在使用简单的JSON转换,这意味着在JSON对象中,您的密钥是caprod 默认情况下,Jackson期望键与字段名称匹配,即customerAcctproduct 最简单的方法可能是使用@JsonField("ca")注释Java字段。 (或者,您可以使用Java或JavaScript重命名属性。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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