![](/img/trans.png)
[英]Send data to Frontend(Angular JS) from backend (Java/Jersey/REST)
[英]How to send multiple objects from Angular2 to Java Spring backend
我正在尝试将Angular 2中的两个对象( CustomerAcct
和Product
)发送到静态服务(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对象中,您的密钥是ca
和prod
。 默认情况下,Jackson期望键与字段名称匹配,即customerAcct
和product
。 最简单的方法可能是使用@JsonField("ca")
注释Java字段。 (或者,您可以使用Java或JavaScript重命名属性。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.