Thymeleaf form

0

Mam taki problem, gdy wysyłam zwykłego posta za pomoca ARC to rekord dodaj sie do bazy ale chciałbym to robić za pomoca formularza thymeleaf

co mam?
controller user zmapowany na /user i metode add wystawioną na posta

 
    @RequestMapping(method = RequestMethod.POST)
    public void add(@RequestBody User user) {
    userRepository.save(user);
    }

kawałek html

<form  th:action="@{/user}"  method="post">
    <input type="text" name="name" />
    <input type="submit" value="Submit" />
</form>

i dostaje

There was an unexpected error (type=Unsupported Media Type, status=415).
Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported

0

Miałem kiedyś podobny problem, to problem z nagłówkami w Twoim szablonie. Tutaj podsyłam szablon,który na pewno działa:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head lang="en">

    <title>Spring Core CRUD</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

    <link href="http://cdn.jsdelivr.net/webjars/bootstrap/3.3.4/css/bootstrap.min.css"
          th:href="@{/webjars/bootstrap/3.3.5/css/bootstrap.min.css}"
          rel="stylesheet" media="screen" />

    <script src="http://cdn.jsdelivr.net/webjars/jquery/2.1.4/jquery.min.js"
            th:src="@{/webjars/jquery/2.1.4/jquery.min.js}"></script>

    <link href="../static/css/spring-core.css"
          th:href="@{css/spring-core.css}" rel="stylesheet" media="screen"/>
</head>
<body>
<div class="container">
    <h1>Hello World</h1>

    <h2>This is my Thymeleaf index page</h2>

</div>

</body>
</html> 
0

mój wyglada niemal identycznie, ale dla formalności wkleiłem ten twój i dalej dupa

0

Problemem jest @RequestBody
Powinieneś użyc @ModelAttribute i ogólnie zrobić to na modelach

0

dzieki dziala

0

Spróbuj tak:

<form  th:object="${user} th:action="@{/user}"  method="post">
    <input type="text" th:field="*{name}" name="name" />
    <input type="submit" value="Submit" />
</form>

Z tymże najpierw będziesz musiał obsłużyć żadanie GET dla danej strony i wrzucić tam np. new User() do model attribute.

Nie działało ci, ponieważ metoda obsługująca POST przyjmowała za argument obiekt User, twój formularz natomiast nie przesyłał takiego obiektu.

Wytłumaczone masz to tutaj: http://stackoverflow.com/a/17678711/1646298

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