使用Spring MVC提交表单后,为什么会丢失信息?

时间:2019-03-13 11:23:18

标签: spring spring-mvc

正如我在标题中所说的那样,我丢失了从JSP返回到Controller的对象中的信息。

从我的控制器中,我传递了一个ModelAndView以及一个Historic类的对象。 在JSP页面中,我可以访问该对象的所有值,但是当我提交时,我只获得了部分信息,此过程有些松动。

控制器:

@GetMapping("/tt")
public ModelAndView index(Model model) {
HistoricBO historic = new HistoricBO();
// ... I fulfill this object ...
return new ModelAndView("tt", "historic", historic);
}

在JSP中,我可以访问我传递的所有信息。 我以两种不同的方式使用值。第一个(以后我将无法恢复的信息)是:

<form:form method="POST" action="/addInput" modelAttribute="historic">
....
<form:label path="userHistoric[0].user.name" />
<form:input path="userHistoric[0].user.name" disabled="true" />

成为userHistoric HistoricBO对象中的列表。

使用对象值的另一种方法是到寄存器的daoing循环并显示它们。提交后我可以拥有这些值:

c:forEach items="${historic.userHistoric[0].periods[0].registers}" var="reg" varStatus="rog">
...
<td class="tab-odd">
  <form:input path="userHistoric[0].periods[0].registers[${rog.index}].hours[0]" class="monin" type="number" />
</td>

捕获提交的方法如下:

@PostMapping("/addInput")
public String savePeriod(
        @ModelAttribute("historic") HistoricBO inputs,
        BindingResult result, ModelMap model) {
    if (result.hasErrors()) {
        return "error";
    }
...

在这里,对象 inputs 仅设置了小时数,其余的对象为空。

请问为什么信息丢失以及如何解决? 谢谢

1 个答案:

答案 0 :(得分:0)

删除df.vaccine_preg.map(vaccine) 并改为使用disabled="true"readonly="true",如下所示。

readonly="readonly"

禁用的值将不会通过表单提交。

在此处查看此values-of-disabled-inputs-will-not-be-submitteddemo