Reputation: 478
I add an attribute to my model and returning the the page. In the admin.html page i iterate through all users and show there details. But i want to return one user out of the list back to "/admin/showReports"
.
I hope someone can help me. I'am literally stuck.
@RequestMapping(value = "/admin")
public String showAllUser(Model model) {
model.addAttribute("allUser",userDelegate.getAllUser());
return "admin";
}
@RequestMapping(value = "/admin/showReports", method = RequestMethod.POST)
public String showAllAvailableReportsForUser(Model model, User user) {
model.addAttribute("user", user);
model.addAttribute("reports", userDelegate.getAllReports());
return "addReports";
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Admin</title>
<link rel="stylesheet" href="/webjars/bootstrap/3.3.6/css/bootstrap.css"/>
<script src="/webjars/bootstrap/3.3.6/webjars-requirejs.js"></script>
</head>
<body>
<h1>Admin</h1>
<div class="container">
<div class="col-md-1"></div>
<div class="panel panel-default col-md-10">
<div class="panel-heading">User</div>
<table class="table">
<tr>
<th>Id</th>
<th>Username</th>
<th>E-mail</th>
<th>Reports</th>
</tr>
<tr th:each="user : ${allUser}">
<td th:text="${user.identifier}"></td>
<td th:text="${user.username}"></td>
<td th:text="${user.email}"></td>
<td th:text="${user.reports}"></td>
<form th:action="@{/admin/showReports}" method="post">
<td>
<!--Here is the Problem. How do i return one user from the list?-->
<input type="hidden" th:value="${user}" />
<button type="submit">edit</button>
</td>
</form>
</tr>
</table>
</div>
<div class="col-md-1"></div>
</div>
</body>
</html>
@Bean
public SpringResourceTemplateResolver templateResolver(){
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setPrefix("classpath:/templates/");
resolver.setSuffix(".html");
resolver.setTemplateMode("HTML5");
resolver.setOrder(1);
return resolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setTemplateResolver(templateResolver());
engine.addDialect(new LayoutDialect());
return engine;
}
@Bean
public ThymeleafViewResolver thymeleafViewResolver() {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine());
return resolver;
}
Upvotes: 0
Views: 1894
Reputation: 1354
You can pass an unique identifier via your url to solve your problem.
Example via id, mind the change to GET so just place a link instead of the form.
@RequestMapping(value = "/admin/showReports/{id}", method = RequestMethod.GET)
public String showAllAvailableReportsForUser(Model model, @PathVariable("id") Long id) {
User user = userDelegate.getUserById(id); // Get user via id
mav.addObject("user", user);
// Get and add whatever else you need
return "addReports";
}
Upvotes: 1