简体   繁体   English

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

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

I am trying to send two objects ( CustomerAcct and Product ) from Angular 2 to restful services (Java Spring). 我正在尝试将Angular 2中的两个对象( CustomerAcctProduct )发送到静态服务(Java Spring)。 I am using a wrapper object called CustProduct , which has two objects in it, CustomerAcct and Product. 我正在使用一个名为CustProduct的包装对象,其中有两个对象CustomerAcct和Product。 Somehow on the back end CustomerAcct object is null but Product object is not. 后端CustomerAcct对象以某种方式为null,但Product对象不是。

Here is my code: 这是我的代码:

GUI: 界面:

CustProduct class: CustProduct类别:

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

Service: 服务:

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);
}

Backend code: 后端代码:

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
}

I don't understand why it is dropping CustomerAcct object. 我不明白为什么它会丢弃CustomerAcct对象。 If I send CustomerAcct object in @RequestBody by itself, it works but not in the wrapper object. 如果我自己在@RequestBody发送CustomerAcct对象,则它有效,但在包装对象中不起作用。 My class definitions on GUI and backend are same. 我在GUI和后端上的类定义是相同的。

Thanks for you help. 感谢您的帮助。

You're using a simple JSON conversion, which means that in the JSON object your keys are ca and prod . 您正在使用简单的JSON转换,这意味着在JSON对象中,您的密钥是caprod By default, Jackson expects the keys to match the field names, which are customerAcct and product . 默认情况下,Jackson期望键与字段名称匹配,即customerAcctproduct The simplest approach is probably to annotate your Java fields with @JsonField("ca") . 最简单的方法可能是使用@JsonField("ca")注释Java字段。 (Alternately, you could rename the properties in either Java or JavaScript.) (或者,您可以使用Java或JavaScript重命名属性。)

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

相关问题 从后端(Java / Jersey / REST)将数据发送到前端(Angular JS) - Send data to Frontend(Angular JS) from backend (Java/Jersey/REST) Angular2前端在Google云平台上的Spring Boot后端 - Angular2 frontend Spring Boot backend on Google cloud platform 如何使用Java EE后端Maven构建和Glassfish服务器运行Angular2应用程序? - How do I run Angular2 app with java EE backend maven build and glassfish server? 如何在Java中将多个对象发送到套接字 - How to send multiple objects to socket in Java 使用Java和Angular2登录Spring Security - Spring Security login with Java and Angular2 Java:无法将包含类型文件输入的Angular 5表单发送到REST后端(Spring Boot) - Java : Cannot send a form with Angular 5 that contain an input of type file to a REST backend (Spring Boot) 在后端Java EE的表中获取一个带Angular2的元素 - Get one element with Angular2 in a table in the backend Java EE Java:无法使用Angular 5将POST请求发送到后端 - Java : Cannot send POST request to backend with Angular 5 如何将Angular2与Java集成 - How to integrate Angular2 with Java 如何在 Spring 安全后端正确验证来自 Angular 应用程序的用户 - How to correctly authenticate User from an Angular app at an Spring Security Backend
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM