Мне нужно отправить объект по почте из angular UI в REST API. В Angular пользовательском интерфейсе я фиксирую транзакцию из выпадающего списка с несколькими выборками, используя компонент ng-multiselect-dropdown . и мой объект сделки класса DealApi выглядит следующим образом:
export class DealApi{
applicationReceived: any;
dealid: number;
expectedReleaseDate: Date;
plannedRatingCommitteeDate: Date;
priority: any;
releaseTimeCriteria: any;
subsequentRating: any;
}
в app.component. html:
<ng-multiselect-dropdown name="dropdown"
[placeholder]="'Enter Deal Name or Deal ID'"
[settings]="dropdownSettings"
[data]="dropdownList"
[(ngModel)]="deal.dealid"
(onSelect)="onItemSelect($event)"
(onDeSelect)="onItemSelect($event)"
(onSelectAll)="onSelectAll($event)"
(onDeSelectAll)="onDeSelectAll($event)" disabled>
</ng-multiselect-dropdown>
</td>
И в app.component.ts:
export class AppComponent implements OnInit {
title = 'angular-app';
name = 'angular-app';
datePickerConfig: Partial<BsDatepickerConfig>;
dropdownList = [];
selectedItems: any;
dropdownSettings:IDropdownSettings;
dealid : number;
PlannedRatingCommitteeDate: Date;
ExpectedReleaseDate: Date;
ReleaseTimeCriteria: any;
SubsequentRating: any;
Priority: any;
ApplicationReceived: any;
deal:DealApi= new DealApi();
constructor(private service:HttpclientService) {}
ngOnInit(){
this.dropdownList = [
{item_id:1, item_text: "Dealname1 (82034890)"},
{item_id:2, item_text: "Dealname2 (82034890)"},
{item_id:3, item_text: "Dealname3 (82034890)"},
{item_id:4, item_text: "Dealname4 (82034890)"}
];
this.selectedItems = [
{item_id: 2, item_text: "Dealname1 (82034890)"},
{item_id: 3, item_text: "Dealname2 (82034890)"}
];
this.dropdownSettings = {
singleSelection: true,
enableCheckAll:true,
idField: 'item_id',
textField: 'item_text',
selectAllText: 'Select All',
unSelectAllText: 'UnSelect All',
itemsShowLimit: 3,
allowSearchFilter: true
};
и On Angular UI. Когда я нажимаю кнопку сохранения, он вызывает метод save (), который вызывает getdeals (this.deal), как показано ниже:
this.service.getdeals(this.deal).subscribe((data:any)=>{alert("Deal added successfully.");});
и в httpClient.service.ts , Я вызываю сообщение при передаче объекта сделки:
public getdeals(deal: DealApi)
{
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Accept': 'application/json'
})
};
const url = 'http://localhost:8080/deals';
console.log(deal);
return this.http.post(url,deal,httpOptions);
}
В ВЫХОДЕ: Я получаю объект сделки как:
{
dealid: [{item_id: 3, item_text: "Dealname3 (82034890)"}]
plannedRatingCommitteeDate: "2020-04-05T04:00:00.000Z"
expectedReleaseDate: "2020-04-19T04:00:00.000Z"
releaseTimeCriteria: "Market open"
subsequentRating: "No"
priority: "High"
applicationReceived: "No"
}
, и выдается ошибка: JSON ошибка разбора: Невозможно десериализовать экземпляр int
из токена START_ARRAY; вложенное исключение: com.faster xml .jackson.databind.ex c .MismatchedInputException: невозможно десериализовать экземпляр int
из токена START_ARRAY↵ в [Source: (PushbackInputStream)
мне нужен только item_id чтобы быть назначенным на dealid и dealid должен прийти как число вместо массива. Как я могу изменить свой код для этого?
ЛЮБАЯ ПОМОЩЬ БУДЕТ ЦЕНА!