我正在研究MVC Java项目,并且正在将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";
}