[java] Spring MVC在控制器之间传递相同的对象



Answers

我怎样才能确保相同的对象通过查看传递。 我不想将该对象添加为sessionAttribute,因为用户可能会修改会话中的许多员工

您可以在初始渲染时填充随机数的对象中创建一个字段,然后将该对象存储在会话中。 在视图中,您可以使用隐藏输入来映射该字段,现在,当用户发送编辑操作的请求时,您可以获取该隐藏字段,并通过隐藏字段中的数字从会话中获取原始对象。 这将解决不同标签冲突的多个编辑。

Question

在Spring MVC中,如何在两个控制器方法之间传递一个对象? 我有一个更新表单和一个updateController。 在控制器中,我有两种方法,一种是获取数据并将其显示在视图中。 当用户点击具有修改的更改的更新按钮时,调用控制器的第二种方法。 我正在观察的是,我在控制器的第二个方法中获得的对象不是我在第一个控制器方法调用中传递给视图的同一个对象。 它是一个新的对象,所有的表单字段映射到它。 如何确保将同一对象传递给第一个控制器方法提供给视图的第二个控制器方法?

@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对象时,它与前一个控制器调用中传递的对象不是同一个对象。 没有形式支持但具有值的字段已更改为空。 我怎样才能确保相同的对象通过查看传递。 我不想将该对象添加为sessionAttribute,因为用户可能会修改会话中的许多员工。






Links