Я работаю над Java-проектом MVC и использую Spring Boot с ThymeLeaf.У меня проблема в том, что при создании задачи я хочу выбрать и сохранить пользователя, который будет назначен для задачи.Мне удалось сделать выбор правильно, но я не могу сохранить выбранного пользователя.Он всегда сохраняется без назначенного пользователя.
Вот мой класс сущности «Задача»:
@Entity
public class Task extends BaseEntity {
private String name;
private String description;
private Date dateOfCreation;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date dueDate;
@ManyToOne
private User assignee;
public Task() {
this.dateOfCreation = new Date(System.currentTimeMillis());
}
}
Моя сущность «Пользователь» выглядит следующим образом:
@Entity
public class User extends BaseEntity {
private String username;
private String password;
@OneToMany(mappedBy = "assignee")
private List<Task> assignedTasks;
}
Где BaseEntity содержит
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Version
private Integer version;
Моя функция контроллера, которая отвечает за мой taskform.html:
@RequestMapping("/new")
public String newTask(Model model){
model.addAttribute("task", new Task());
model.addAttribute("users", userService.getAllUsers());
return "task/taskform";
}
И мой taskform.html выглядит так:
<form class="form-horizontal" th:object="${task}" th:action="@{/task}" method="post">
<input type="hidden" th:field="*{id}"/>
<input type="hidden" th:field="*{version}"/>
<div class="form-group">
<label class="col-sm-2 control-label">Name:</label>
<div class="col-sm-10">
<input type="text" class="form-control" th:field="*{name}"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Description:</label>
<div class="col-sm-10">
<input type="text" class="form-control" th:field="*{description}"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Description:</label>
<div class="col-sm-10">
<input type="date" th:value="*{dueDate}" th:field="*{dueDate}" id="dueDate" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Select user:</label>
<div class="col-sm-10">
<select class="form-control">
<option th:field="*{assignee}" th:each="assignee : ${users}" th:value="${assignee}" th:text="${assignee.username}">
</option>
</select>
</div>
</div>
<div class="row">
<button type="submit" class="btn btn-default">Submit</button>
</div>
Я пытаюсь передать объект из списка пользователей в качестве значения, но он не работает. Есть идеи, как это сделать?
Показ пользователей работает должным образом:
Рабочий веб-интерфейс
Нуль присваивается столбцу, которому назначен пользователь, где должен быть назначен пользователь.
Нуль в базе данных H2
РЕДАКТИРОВАТЬ
Вот мой метод POST из контроллера задач:
@RequestMapping(method = RequestMethod.POST)
public String saveOrUpdate(Task task){
taskService.persistTask(task);
return "redirect:/task/list";
}