我的问题是我可以在Thymeleaf和Spring之间传递模型,但是Thymeleaf仍然指示错误。
春季代码:
@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:/";
}
胸腺代码:
<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}。我已经停止并重新运行了应用程序多次,所以我认为代码中有些地方不对,即使它可以正常工作。
我应该怎么做才能解决这个问题?
答案 0 :(得分:1)
首先,我认为您在后期映射中不需要路径变量。您可以使用不带路径变量的后映射。因此,尝试修改您的控制器,例如
@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>
我认为这会如您所愿。