Я использую SpringBoot с Thymeleaf, чтобы создать тривиальный пример, который поможет мне изучить две технологии.Thymeleaf with SpringBoot - как скомпилировать модель и удалить?
Я основывая свой пример на THIS GUIDE
объекта является приветствием, которое имеет идентификатор и содержание.
Я создаю приветствие просто отлично, и я могу перечислить все приветствия, которые я создал.
Затем я хотел добавить опцию удаления для каждого приветствия на странице списка. Когда вы нажимаете delete, я хочу, чтобы объект был удален, и страница списка снова отлаживалась.
Увы, когда я загружаю страницу списка я получаю эту ошибку:
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'greeting' available as request attribute
контроллер и respository объекты
@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>
Будет нажмите здесь в нужном направлении :-)
Спасибо Hasitha, это прошло мимо ошибки, однако объект Greeting не создается, когда он прибывает в метод удаления контроллера. То есть id всегда 0, несмотря на то, что я нажимаю. Кроме того, мне любопытно, почему мне нужно добавить пустой объект к модели, когда реальный объект уже находится в модели? То есть объект приветствия ** s ** - это список, содержащий все объекты «приветствия». Я думал, что смогу использовать текущую переменную итерации (приветствия) во вложенной форме удаления? – MooMoo