【发布时间】:2020-06-20 02:36:48
【问题描述】:
我正在尝试创建一个通过@ModelAttribute 传递数据的提交按钮。但是@PostController中postDTO的字段值不变。
非常感谢和亲切的问候,迈克。
控制器@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>
控制器@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";
}
我已经尝试按照Hidden Field Value Blank Thymeleaf 中的建议修改我的 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>
【问题讨论】:
标签: java html spring-boot thymeleaf