Я пытаюсь создать кнопку отправки, которая передает данные через @ModelAttribute
. Однако значения полей postDTO
в @PostController
не изменились.
Большое спасибо и наилучшие пожелания, Майк.
Controller @ GetMapping
@GetMapping("/post")
public String post(Model model) {
List<Post> posts = postRepository.findAllByOrderByPostedAtDesc();
model.addAttribute("postDTO", new PostDTO("", ""));
model.addAttribute("posts", posts);
return "post";
}
html
<ul>
<li th:each="post: ${posts}">
<form th:if="${sessionUser!=null and sessionUser.admin == true}" th:object="${postDTO}" th:action="@{/postEdit}" method="post">
<input type="hidden" th:field="*{id}" th:value="${post.id}">
<button type="submit">Update post</button>
</form>
</li>
</ul>
Controller @ PostMapping
@PostMapping("/postEdit")
public String editPost(@ModelAttribute("postDTO") PostDTO postDTO, @ModelAttribute("sessionUser") User sessionUser) {
if (sessionUser.getAdmin()) {
Optional<Post> post = postRepository.findById(postDTO.getId());
if (post.isPresent()) {
redirectAttributes.addAttribute("postId", post.get());
return "redirect:/postEdit/";
}
}
return "redirect:/post";
}
Я уже пытался изменить мой html Форма, как предлагается в Значение скрытого поля Пустой лист тимьяна . Это работает для postDTO
. Тем не менее, мой sessionUser.id
также установлен на значение post.id
.
<form th:if="${sessionUser!=null and sessionUser.admin == true}" th:object="${postDTO}" th:action="@{/postEdit}" method="post">
<input type="hidden" name="id" th:value="${post.id}">
<button type="submit">Update post</button>
</form>