Problem z edycją CRUD

0

Witam wszystkich,
a więc mam problem z edycją w CRUD w Springu. Robiłem identycznie w jsp a teraz robie to samo w thymeleafie, choć nie wiem czy w tym problem.

    @RequestMapping("/editNote/{id}")

    public String editNote(@PathVariable Integer id, Model model) {

        Note note=noteService.findById(id);
        model.addAttribute("note",note);
        noteService.update(note);

        return "editNote";
    }

    @PostMapping("/editNote")       // w ten sposob odbieram edytowana clienta z widoku edit.jsp


    public String editNote2(@ Valid Note note) {

        noteService.update(note);

        return "redirect:/";
    }

a tak wygląda mój widok :

<!DOCTYPE html>

<html xmlns:th="http://www.thymeleaf.org">

<head lang="pl">
    <title>Good Thymes Virtual Grocery</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>

<body>

<h1>Welcome in Note</h1>



</p>

<form action="#" th:action="@{/editNote/{id}}" th:object="${note}" method="post">
    <table border="1">

        <tr>
            <td><label th:text="#{msg.editTitle}" /></td>
            <td><input type="text" th:field="*{title}" /></td>
        </tr>
        <tr>
            <td><label th:text="#{msg.editContent}" /></td>
            <td><input type="text" th:field="*{content}" /></td>
        </tr>
        <tr>
            <td><input type="submit" value="Submit" /></td>
        </tr>
    </table>
</form>
</body>

</html>

wyskakuje mi następujący błąd :

2019-05-30 14:03:47.197 WARN 18219 --- [nio-8080-exec-9] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested exception is java.lang.NumberFormatException: For input string: "{id}"]

0

Czy ma ktoś może pomysł w czym leży problem ?

1

Twój path variable {id} od strony front-endu nie jest nigdzie inicjalizowany, przez co url jaki wysyłasz, to faktycznie /editNote/{id}, no i jest błąd, bo {id} (dosłownie, te znaki które tu widzisz pogrubione) to nie jest liczba tylko ciąg znaków

Na przyszłość podejrzyj konsolę WWW, zakładka Network i tam widzisz jakie requesty HTTP idą do backendu

0

Nie bardzo wiem gdzie ma to zainicjalizować, ponieważ wpisuje id w adresie url. Coś nie gra w widoku editNote ?

1

Nie znam Thymeleaf, ale skąd takie coś: action="@{/editNote/{id}}" ma wiedzieć, co tam za id trzeba wpisać? Ja bym ręcznie kleił urla

0

No właśnie ja tez robie pierwszy raz CRUDa na thymeleafie, a co masz na myśli przez ręczne klejenie urla ?

1

Mam na myśli konkatenację stringów. Ale nieważne, obczaj tego linka, może tamtejsze przykłady coś pomogą: https://stackoverflow.com/questions/14938344/thymeleaf-construct-url-with-variable

0

Dziękuje za pomoc. Udało się. Zrobiłem to tak:

<form  th:action="@{/edit/} + ${id}"  th:object="${note}" method="post">

1 użytkowników online, w tym zalogowanych: 0, gości: 1