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