【发布时间】:2016-11-05 17:31:17
【问题描述】:
我正在使用带有 Thymeleaf 的 SpringBoot 构建一个简单的示例来帮助我学习这两种技术。
我的示例基于THIS GUIDE
实体是一个 Greeting,它有一个 Id 和一个 Content。
我创建的问候语很好,我可以列出我创建的所有问候语。
然后我想为列表页面中的每个问候添加一个删除选项。单击删除时,我希望删除对象并再次提供列表页面。
唉,当我加载列表页面时,我得到了这个错误:
java.lang.IllegalStateException: Bean 名称“greeting”的 BindingResult 和普通目标对象都不能用作请求属性
控制器和存储库对象
@Controller
public class GreetingController {
@Autowired
GreetingRepo gr;
@RequestMapping(value="/greeting/list", method=RequestMethod.GET)
public String greetingsForm(Model model) {
model.addAttribute("greetings", gr.findAll());
return "greeting/list";
}
@RequestMapping(value="/greeting/delete", method=RequestMethod.POST)
public String deleteGreeting(@ModelAttribute("greeting") Greeting greeting) {
gr.delete(greeting);
return "redirect:/greeting/list";
}
}
@RepositoryRestResource
interface GreetingRepo extends JpaRepository<Greeting, Long> {
}
List.html 页面:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Handling Form Submission</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Result</h1>
<div th:each="greeting : ${greetings}">
<p th:text="'id: ' + ${greeting.id}" />
<p th:text="'content: ' + ${greeting.content}" />
<form action="#" th:action="@{/greeting/delete}" th:object="${greeting}" method="post">
<input type="hidden" th:field="*{id}"/>
<input type="hidden" th:field="*{content}"/>
<input type="Submit" value="Delete"/>
</form>
</div>
<a href="/greeting/add">Add another</a>
<a href="/greeting/list">Show All</a>
</body>
</html>
希望能在这里朝着正确的方向前进 :-)
【问题讨论】:
标签: java spring spring-boot thymeleaf