Проблема URL-адреса метода в веб-сервисе Java - PullRequest
0 голосов
/ 25 сентября 2018

У меня проблема с веб-сервисом в 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();
        });
  }
...