Я работаю над проектом Java MVC и использую Spring Boot с ThymeLeaf. У меня проблема в том, что при создании задачи я хочу выбрать и сохранить пользователя, который будет назначен задаче. Мне удалось сделать выбор правильно, но я не могу сохранить выбранного пользователя. Он всегда сохраняется без назначенного пользователя.
Вот мой класс сущности Task:
@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>
Я пытаюсь передать объект из списка пользователей в качестве значения, но он не работает. Есть идеи, как это сделать?
Отображение работы пользователей, как ожидалось:
Нулевое значение присваивается столбцу уполномоченного, в котором должен быть назначен пользователь.
РЕДАКТИРОВАТЬ
Вот мой метод POST из контроллера задач:
@RequestMapping(method = RequestMethod.POST)
public String saveOrUpdate(Task task){
taskService.persistTask(task);
return "redirect:/task/list";
}
@SimonMartinelli Я обновил вопрос с помощью соответствующего метода POST.
Если вы установите точку останова в методе saveOrUpdate, назначен ли пользователь?
@SimonMartinelli, пользователь не назначен. Правопреемник не указан.
как выглядит ваш метод публикации?