Почему я теряю информацию после отправки формы в Spring MVC? - PullRequest
0 голосов
/ 13 марта 2019

Как я сказал в заголовке, я теряю информацию в объекте, который возвращается из JSP в контроллер.

Из моего контроллера я передаю 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.

И еще один способ, которым я использую значения объектов, - это циклическое переключение регистров и их отображение. Я могу иметь эти значения после отправки:

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 голосов
/ 13 марта 2019

Удалите disabled="true" и используйте readonly="true" или readonly="readonly" вместо этого, как показано ниже.

<form:input path="userHistoric[0].user.name" readonly="readonly" />

Отключенные значения не будут отправлены с формой .

См. Здесь значения отключенных входов, которые не будут представлены и демо здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...