弹簧MVC在控制器之间传递相同的物体
2022-09-04 07:11:49
在Spring MVC中,如何在两个控制器方法之间传递对象?我有一个更新表单和一个更新控制器。在控制器中,我有2种方法,一个用于获取数据并将其显示在视图中。当用户单击具有修改的更改的更新按钮时,将调用控制器的第二种方法。我所观察到的是,我在控制器的第二个方法中获得的对象与我在第一个控制器方法调用中传递给视图的对象不同。它是一个完全映射了所有表单字段的新对象。如何确保将相同的对象传递给第二个控制器方法,该方法由第一个控制器方法提供给视图?
@RequestMapping(value = "/showEmpDetail.html", method = RequestMethod.GET)
public String showEmpDetails(
@RequestParam(value = "page", required = false) Integer page,
HttpServletRequest request, @RequestParam("empId") Long empId,
ModelMap model) {
// Get employee using empId from DB
model.addAttribute("emp",emp);
return "showEmpDetail";
}
上述控制器方法从 Db 获取 emp 值,并在视图中正确显示它。现在,用户更改了一些详细信息并单击了“提交”按钮。调用以下控制器方法。
@RequestMapping(value = "/editEmpFormSubmission.html", method = RequestMethod.POST)
public String editEmpFormSubmission(
@RequestParam(value = "page", required = false) Integer page,
@ModelAttribute("emp") Employee emp, BindingResult result,
ModelMap model, HttpServletRequest request) {
// update changes in DB
}
在上面的控制器方法中,当我检查emp对象时,它与我在上一个控制器调用中传递的对象不同。不支持表单但具有值的字段已更改为 null。如何确保通过视图传递相同的对象。我不想将对象添加为会话属性,因为用户可能会修改会话中的许多员工。