Мой интерфейс сделан с Angular. Бэкэнд сделан с Java Spring.
У меня есть две сущности essen(meal)
и essensplan (mealplan)
. Каждый essensplan
состоит из пяти объектов essen
, настроенных как ManyToMany Relationship в Java Spring.
Шаблон отображает каждый объект essen
в поле выбора. С [ngValue]="essen"
я передаю объект essen
методу addEssenToEssensplan
в моем компоненте и сервисе.
essensplan-detail.component. html
<form *ngIf="essensplan">
<div class="form-group">
<select [(ngModel)]="essen" class="form-control" [ngModelOptions]="{standalone: true}">
<option *ngFor="let essen of speisekarte" [ngValue]="essen" label="{{essen.name}}"></option>
</select>
</div>
<button (click)="addEssenToEssensplan(essen)" type="button" class="btn btn-
primary">Hinzufügen</button>
</form>
essensplan-detail.component.ts
addEssenToEssensplan(essen: Essen): void {
this.essensplanService.addEssenToEssensplan(this.essensplan, essen);
}
essensplan.service.ts
addEssenToEssensplan(essensplan: Essensplan | number, essen: Essen): Observable<Essen> {
const essensplanId = typeof essensplan === 'number' ? essensplan : essensplan.id;
const currentEssen = essen;
const url = `${this.essensplanUrl}/${essensplanId}/add`;
const data = {id: essensplanId, essen: currentEssen};
return this.http.post<Essen>(url, data);
}
Контроллер в Java Весна
@PostMapping(path = "/{id}/add")
public void addEssenToEssensplan(@PathVariable("id") int id, @RequestBody Essen essen) {
essensplanService.addEssenToEssensplan(id, essen);
}
Служба:
@Transactional
public Essensplan addEssenToEssensplan(int id, Essen essen) {
Optional<Essensplan> optionalEssensplan = essensplanRepository.findById(id);
if (optionalEssensplan.isPresent()) {
Essensplan essensplan = optionalEssensplan.get();
essensplan.getEssenProWoche().add(essen);
return essensplan;
} else return null;
}
Я уже сделал POST-запрос через Почтальон клиента, например, http://localhost:8080/essensplan/2/add
и работал. Мне кажется, что запрос POST не достигает моего Java Spring Controller.