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