У меня есть объект сущности гибернации. Мне нужно обновить этот объект, поэтому я передал этот объект в форму. В форме я изменю некоторые значения, а остальные будут постоянными. И я не могу показать эти постоянные значения клиенту, поэтому они должны перейти на следующую страницу с помощью другого метода, кроме как разложить их экспликацию в форме html.Как получить значения modelAttribute, которые не находятся в форме, весной
Вот мой объект, полученный в контроллере и передаются к просмотру:
@GetMapping("/update")
public String update(@RequestParam("dataId") int id, Model md){
Doctor dr = doctorService.getById(id);
/*for example lets say this doctor object has following properties
dr.setId(3);
dr.setName("James");
dr.setUserId(7);
*/
md.addAttribute("doctor", dr);
return "object-form";
}
Вот моя форма в виде:
<form:form action="save" modelAttribute="doctor" method="post">
<form:errors path="name"></form:errors>
<form:input path="name" placeholder="Doktor İsmi" class="form-control" />
<form:hidden path="id" />
<input type="submit" value="Save doc" />
</form:form>
из формы, только имя и идентификатор значения однако, userId - null. Мне нужно получить этот userId без сообщения.
Вот мой контроллер пост-процесс, который я обрабатывать объект:
@PostMapping(value="/save")
public String save(@Valid Doctor dr, BindingResult bindingResult){
doctorValidator.validate(dr, bindingResult);
if (bindingResult.hasErrors()) {
return "object-form";
}
else{
doctorService.save(dr);
return "redirect:list";
}
}
Я не знаю, как можно достичь этого г даже есть способ для этого. Я искал в Google, но я не нашел решения.
Спасибо много ,,
Это решает мою проблему, но я не уверен, если это хорошо практика. Вообще-то я пытаюсь выполнить базовую операцию обновления. Это стандартный способ сделать это? (Я начинающий спящий и весенний) –
Если у вас нет дальнейшей работы с userId, хорошей практикой было бы создание класса модели для вашей формы. И при обновлении создайте объект объекта из этого объекта модели формы и сохраните его. Это обновит строки новыми значениями и сохранит другие (userId ins this case), которые не заданы из формы. Это сэкономит вам один дополнительный запрос в вашем db. – mhshimul
Спасибо, это звучит лучше. Еще один момент: как передать объект view-model из метода show-update-form, чтобы сохранить метод класса контроллера для назначения его из объекта hiberanate? –