Может передавать модели в Spring, но Thymeleaf по-прежнему указывает на ошибку - PullRequest
0 голосов
/ 02 января 2019

Моя проблема в том, что я могу передавать модели между Thymeleaf и Spring, но Thymeleaf по-прежнему указывает на ошибку.

Spring code:

@GetMapping("{id}/edit")
  String getEdit(@PathVariable Long id, Model model) {
  postRepository.findById(id).ifPresent(o -> model.addAttribute("post", o));
  return "edit";
}

@PostMapping("{id}/edit")
  String postEdit(@ModelAttribute Post post) {
  postRepository.save(post);
  return "redirect:/";
}

Код Thymeleaf:

<form th:action="|/${post.id}/edit|" th:method="POST" th:object="${post}">
  <input type="text" th:value="*{title}" name="title">
  <input type="text" th:value="*{content}" name="content">
  <input type="submit" value="Edit">
</form>

Thymeleaf указывает, что он не может разрешить $ {post.id}, * {title} и * {content}.Я останавливал и перезапускал приложение несколько раз, поэтому я полагаю, что в моем коде что-то не так, даже если он работает.

Что мне следует сделать, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 02 января 2019

Прежде всего, я думаю, что вам не нужна переменная пути в пост-отображении.Вы можете использовать пост-отображение без переменной пути.Поэтому попробуйте изменить свой контроллер, например,

@PostMapping("/edit")
  String postEdit(@ModelAttribute Post post) {
  postRepository.save(post);
  return "redirect:/";
}

Если вы напишите контроллер таким образом, будет легко определить путь в тимелице.

И вторая ошибка can't resolve *{title} and *{content} из-за неверного ключевого слова.Пожалуйста, попробуйте изменить свой лист тимьяна, например

<form th:action="@{/edit}" th:method="POST" th:object="${post}">
  <input type="text" th:field="*{title}" name="title">
  <input type="text" th:field="*{content}" name="content">
  <input type="submit" value="Edit">
</form>

Я думаю, это сработает, как вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...