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

Spring boot MVC przyjmowanie POST z ajax a zwracanie widoku.

Mały hosting, OGROMNE możliwości
0 głosów
736 wizyt
pytanie zadane 30 marca 2018 w Java przez miro Pasjonat (23,850 p.)

Mam aplikacje webową napisaną w Spring boot. Musiałem na jednej stronie skorzystać z ajax i przesłać JSONem dane do kontrolera. 

$.ajax({
                    type: "POST",
                    contentType: "application/json",
                    url: "/article/" + id + "/update?notebook=" + notebookId,
                    data: JSON.stringify(data),
                    dataType: 'json',
                    success: function (data) {
                        console.log("succes ");
                    },
                    error: function (e) {
                        console.log("error ajax ");
                    }
                });

Udaje mi się przyjąć i zmapować dane do obiektu przez parametr w metodzie:  

@RequestBody Article article

Jednak wtedy nie działa zwracanie widoku ani przez String return "index" ani przez 

return new ModelAndView("index.html");
   @PostMapping("/article/{articleId}/update")
    @ResponseStatus(HttpStatus.CREATED)
    public String updateArticle(@RequestBody Article article, @PathVariable long articleId, BindingResult bindingResult, @RequestParam("notebook") long notebookId) {
        if (bindingResult.hasErrors()) {
            bindingResult.getAllErrors().forEach(objectError -> log.debug(objectError.toString()));
            return "/article/articleform";
        }
        articleService.updateArticle(article, articleId, notebookId);
        return "index";
//        return new ModelAndView("index.html");
}

Poza tym jeszcze je rozumiem dlaczego ajax nie wyświetla komunikatu ani o błędzie ani o sukcesie, nawet jak kontroler dostaje prawidłowe dane. Oraz nie wiem czy dobrze obsługuję BindingResult. 

Projekt znajduje sie na https://github.com/amiroslaw/languide

1 odpowiedź

+1 głos
odpowiedź 30 marca 2018 przez Mateusz51 Nałogowiec (28,180 p.)
Jeśli dobrze pamiętam BindingResult musi być następnym atrybutem po atrybucie oznaczanym @Valid
komentarz 30 marca 2018 przez miro Pasjonat (23,850 p.)
Dzięki zapomniałem o tym. Jednak po dodaniu @Valid i tak omija ten if. Wydaje mi się że to walidacja tutaj nie zadziała bo ja nie przesyłam danych z formularza w normalny sposób tylko przez JS zczytuje dane i ajaxem robię POST.
Akurat głównie chodzi mi o wyświetlenie nowej strony/widoku. Jak nie dodaje RequestBody to wyświtli index, ale nie binduje dane do obiektu Article.

Podobne pytania

0 głosów
1 odpowiedź 368 wizyt
pytanie zadane 3 marca 2019 w Java przez must Bywalec (2,980 p.)
0 głosów
1 odpowiedź 1,021 wizyt
pytanie zadane 14 października 2021 w Java przez Tajniakkk Użytkownik (660 p.)
+1 głos
1 odpowiedź 794 wizyt
pytanie zadane 14 sierpnia 2021 w Java przez DziQu Początkujący (420 p.)

93,715 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,258 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...