我正在使用spring mvc和Hibernate。我有两个实体“项目”和员工,它们是两者之间的双向一对多映射。我能够将数据库中的现有员工添加到项目中。但我现在想要当用户在jsp中填写员工的表单字段时,它会自动显示所有员工的名称,当选择员工时,其他字段会自动设置。我怎样才能做到这一点。 我是春季mvc和jquery的新手。
我的jsp将员工添加到项目
addEmployee.jsp
<form:form modelAttribute="employeeAttribute" method="POST" action="${Url}">
<table>
<tr>
<td>ProjectId:</td>
<td><input type="text" value="${projectId}" />
</tr>
<tr>
<td><form:label path="employeeId"></form:label></td>
<td><form:input path="employeeId" type="hidden"/></td>
</tr>
<tr>
<td><form:label path="employeeName">Employee Name:</form:label></td>
<td><form:input path="employeeName"/></td>
</tr>
<tr>
<td><form:label path="designation">designation:</form:label></td>
<td><form:input path="designation"/></td>
</tr>
<tr>
<td><form:label path="department">department:</form:label></td>
<td><form:input path="department"/></td>
</tr>
<tr>
<td><form:label path="password">password:</form:label></td>
<td><form:input path="password"/></td>
</tr>
<tr>
</table>
<input type="submit" value="Save" />
</form:form>
表单填写后,控制器中的相应操作
@RequestMapping(value="/add",method = RequestMethod.GET)
public String getAdd(@RequestParam("id")Integer projectId,Model model){
Employee emp = new Employee();
model.addAttribute("projectId",projectId);
model.addAttribute("employeeAttribute",emp);
return "addEmployee";
}
@RequestMapping(value="/add", method = RequestMethod.POST)
public String postAdd(@RequestParam("id")Integer projectId,@ModelAttribute("employeeAttribute")Employee employee) throws IOException{
Employee emp = employeeService.getEmployeeByName(employee.getEmployeeName());
if(emp==null){
return "Error";
}
else{
employeeService.add(projectId,emp);
return "redirect:/project3/list";
}
}
答案 0 :(得分:2)
您可以使用javascript为包含onChange()
的选择框编写user list
的事件。使用ajax,您可以将用户ID发送到控制器
这样您就可以获取与用户关联的属性并将其放入request
。 ajax成功后,使用从数据库中提取的相应值填充字段。
详细了解jquery-ajax