클라이언트와 서버 간의 연결이 제대로 작동하고 서버에서 올바른 함수 addEpic이 호출됩니다. 문제는 Epic의 새로운 인스턴스가 서버에 만들어 지지만 클라이언트의 특성은 사용되지 않는다는 것입니다. @RequestBody가 문제인 것처럼 보입니다. @RequestBody를 json 데이터에서 지정된 클래스로 자동 변환하지 않아야합니까? Epic이 @Entity 클래스라는 근본적인 문제가 있습니까?@RequestBody를 사용하여 Angular2에서 Spring RestContoller로 객체 게시
또한 본문이 클라이언트에서 잘못 생성되었을 수 있습니다. 을 console.log (몸)을 보여줍니다
{"epic":{"id":"f97d885a-410f-fa6d-7adc-291e63d35341", "name":"OurName"}}
하지만 내 자신감-UI는 신체 모델 쉐마에 대해 보여줍니다
{"id":"string", "name":"string"}
클라이언트
addEpic(epic:Epic):Observable<any> {
let body = JSON.stringify({epic});
let headers = new Headers({'Content-Type': 'application/json'});
let options = new RequestOptions({headers: headers});
return this.http.post(url + "addEpic", body, options)
.map(this.extractHeader)
.catch(this.handleError);
}
export class Epic {
id: string;
name: string;
}
서버
@RequestMapping(value="/addEpic", method = RequestMethod.POST)
public ResponseEntity<Void> addEpic(@RequestBody Epic epic) {
// Here it seems that constructor of epic is called and a new instance is created
epicRepository.saveAndFlush(epic);
return new ResponseEntity<Void>(HttpStatus.CREATED);
}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class Epic implements Serializable {
private static final long serialVersionUID = -670305953055479441L;
@Column
private String id;
@Column
private String name
}