我对Java和angular中的Web服务有疑问。 当我用角度进行编辑操作时,该操作将成为加法操作。数据无法更改,而是添加到表格中
这是我的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", "*");
}
}
这是我在angular(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();
});
}