【发布时间】:2015-02-24 11:53:27
【问题描述】:
我在我的项目中使用 Spring、jsp 和 Hibernate。我有两个实体 Employee 和 Department。部门是员工的一部分,他们是一对多的关系
@Entity
@Table(name = "employee")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToOne
@JoinColumn(name = "dep_id")
private Department department;
我为视图创建控制器、DAO 和 jsp 页面。
我的问题:我想在我的 jsp 页面中更新 Employee 的数据。在此之前,我在模型中添加员工和部门列表
在控制器中:
model.addAttribute("employee", employeeDao.find(id));
model.addAttribute("departments", departmentDao.list());
在 JSP 中:
<form method="post">
<select value="${employee.department}">
<c:forEach items="${departments}" var ="dep">
<option value="${dep}">${dep.name}</option>
</c:forEach>
</form>
在控制器中(发布请求)
@RequestMapping(value = "/{id}", method = RequestMethod.POST)
public String updateEmployee(@PathVariable("id") long id, Employee employee) {
employee.setId(id);
employeeDao.update(employee);
return "redirect:/employees";
}
但价值 employee.department=null 为什么?
当然,在jsp页面的“select”标签中我可以创建变量dep我的意思是:
<select name ="dep">
<option value="${dep.id}">${dep.name}</option>
</select>
然后在使用部门 ID 的控制器中,我将能够从数据库中获取部门并更新员工。方法对吗?
【问题讨论】:
-
你为什么不使用 form:select 标签 from spring library: javacodegeeks.com/2013/07/… ?