У меня проблема с веб-сервисом в Java и Angular.когда я выполняю операцию редактирования с помощью angular, операция становится операцией добавления.Данные не могут измениться, они добавляются в таблицу
это мой jpa (utilisateurJPA.java)
@Override
public void update(Utilisateur object) {
EntityManager em = emf.createEntityManager();
try {
em.getTransaction().begin();
em.merge(object);
em.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
LOGGER.error("Erreur lors de la mise à jour d'un Utilisateur");
} finally {
if (em.getTransaction().isActive())
em.getTransaction().rollback();
em.close();
}
}
это мой отдых (utilisateurRest.java)
// Mise a jour d'un enregistrement de type utilisateur
@Path("/update")
@POST
@Consumes(MediaType.APPLICATION_JSON)
public void update(Utilisateur utilisateur) {
jpa_utilisateur.update(utilisateur);
}
это мой corsfilter (CorsFilter.java)
package com.ws.util;
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.container.PreMatching;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
@Provider
@PreMatching
public class CorsFilter implements ContainerRequestFilter, ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext request) throws IOException {
if (isPreflightRequest(request)) {
request.abortWith(Response.ok().build());
return;
}
}
private static boolean isPreflightRequest(ContainerRequestContext request) {
return request.getHeaderString("Origin") != null
&& request.getMethod().equalsIgnoreCase("OPTIONS");
}
@Override
public void filter(ContainerRequestContext request, ContainerResponseContext response)
throws IOException {
if (request.getHeaderString("Origin") == null) {
return;
}
if (isPreflightRequest(request)) {
response.getHeaders().add("Access-Control-Allow-Credentials", "true");
response.getHeaders().add("Access-Control-Allow-Methods",
"GET, POST, PUT, DELETE, OPTIONS, HEAD");
response.getHeaders().add("Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept, Authorization, " +
"Accept-Version, Content-Length, Content-MD5, CSRF-Token");
}
response.getHeaders().add("Access-Control-Allow-Origin", "*");
}
}
это мой сервис на английском языке (utilisateurService.service.ts)
import { Utilisateur } from "../modeles/utilisateur";
import { HttpClient } from "@angular/common/http";
import { Injectable } from '@angular/core';
import { Observable } from "rxjs";
@Injectable({
providedIn: 'root'
})
export class UtilisateurService {
constructor(private http: HttpClient) { }
getAll(): Observable<Utilisateur[]> {
return this.http.get<Utilisateur[]>('http://localhost:8080/Gestion_tache/tache/utilisateur/getall');
}
getById(id: number): Observable<Utilisateur> {
return this.http.get<Utilisateur>('http://localhost:8080/Gestion_tache/tache/utilisateur/' + id);
}
add(utilisateur: Utilisateur): Observable<Utilisateur> {
return this.http.post<Utilisateur>('http://localhost:8080/Gestion_tache/tache/utilisateur/add', utilisateur);
}
edit(utilisateur: Utilisateur): Observable<Utilisateur> {
return this.http.post<Utilisateur>('http://localhost:8080/Gestion_tache/tache/utilisateur/update', utilisateur);
}
supp(utilisateur: Utilisateur) {
return this.http.post('http://localhost:8080/Gestion_tache/tache/utilisateur/delete', utilisateur);
}
}
это мой компонент редактирования (editUtilisateur.component.ts)
edit(utilisateur) {
this.utilisateurService.edit(utilisateur)
.subscribe( data => {
alert('Utilisateur modifiée');
this.location.back();
});
}