• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przesłanie tablicy do backendu [Angular][Spring Boot]

Cloud VPS
0 głosów
406 wizyt
pytanie zadane 13 maja 2023 w Java przez mm Użytkownik (890 p.)
zmienione kategorie 13 maja 2023 przez ScriptyChris

Cześć,

Mam problem chciałabym przesłać tablicę z danymi z mojego frontendu do backendu. Mam napisaną funkcję w Angularze, ale nie wiem jak to zrobić w Springu.

To moja funkcja w Angularze:

sendAnswers(){
return this.http.post(`${this.url}`,this.myComponent.Answers[this.myComponent.number]);
  }

Z góry dziękuję za pomoc :)

1 odpowiedź

+1 głos
odpowiedź 13 maja 2023 przez Wiciorny Ekspert (281,530 p.)

Co nie wiesz jak zrobić w springu? W springu powinieneś RequestBody ustawić jako tablice twojego obiektu, nie wiem czy Answers to tablica tablic? 
To mi wygląda this.myComponent.Answers[this.myComponent.number] na przeslanie elementu z tablicy Aswers ktory jest pod indeksem myComponent.number. a nie calej  tablicy. 

//angular 
//answers -> tablica 
this.http.post('http://localhost:8080/resourcepint', answers)
public getAnswers(@RequestBody List<Answers> listAnswers){
...
} 

Musisz się upewnić, że twój typ danych bedzie zgodny z tym jaki masz na backendzie dzieki czemudo poprawnego odczytu i  mapowania treści zapytania HTTP na obiekty Java, framework Spring wykorzysta tzw. HttpMessageConverter. Domyślny  HttpMessageConverter jest obslugiwany w formacie JSON, Spring będzie mógł automatycznie zmapować treść zapytania HTTP na obiekt List<Answers>, pod warunkiem, że zapytanie będzie miało nagłówek Content-Type ustawiony na application/json. ( jesli go nie ustawisz, domyslnie także będzie json)

komentarz 16 maja 2023 przez mm Użytkownik (890 p.)
Mam ustawiony nagłówek, content-type. Ale otrzymuje w backendzie taki błąd

"Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<java.lang.Object>` from Object value (token `JsonToken.START_OBJECT`);"

I w konsoli błąd http 400
komentarz 16 maja 2023 przez Wiciorny Ekspert (281,530 p.)
nie wiem jaki typ danych masz na backendzie i nie wiem co wysyłasz wyraźnie błąd mówi o braku zgodności obiektów.

najprawdopodobniej przesyłasz niepoprawny format JSON lub próbujesz zdeserializować JSON w nieodpowiednim formacie do oczekiwanego obiektu.

Upewnij się, że dane są przesyłane w postaci tablicy obiektów Answers w formacie JSON. Sprawdź również, czy pola i typy danych w klasie Answers odpowiadają strukturze JSON-a.
komentarz 16 maja 2023 przez mm Użytkownik (890 p.)

W Angularze mam taką funkcję do przesłania:

sendOdpowiedzi(odpowiedzi:[]) :Observable<Object>{
     return this.http.post(`${this.Url1}`,odpowiedzi);
   }

A w backendzie tak:

@PostMapping("/answers")
    public ResponseEntity<?> wyslijOdpowiedzi(@RequestBody List<Answers> odpowiedzi ){
        Answers answers ;
       return (ResponseEntity<?>) ResponseEntity.internalServerError();

    }

 

Podobne pytania

0 głosów
1 odpowiedź 278 wizyt
pytanie zadane 16 kwietnia 2023 w Java przez mm Użytkownik (890 p.)
0 głosów
1 odpowiedź 468 wizyt
pytanie zadane 8 stycznia 2023 w Java przez mm Użytkownik (890 p.)
0 głosów
0 odpowiedzi 210 wizyt
pytanie zadane 24 sierpnia 2020 w Java przez Uwegi Początkujący (430 p.)

93,469 zapytań

142,404 odpowiedzi

322,716 komentarzy

62,852 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...