如何在 Spring 中获取不在表单中的 modelAttribute 值
How to get modelAttribute values that are not in form, in Spring
我有一个休眠实体对象。我需要更新这个对象,所以我把这个对象传递给了一个表单。在表格中,我将更改一些值,而其他值是不变的。而且我无法向客户端显示这些常量值,因此它们应该通过另一种方法传递到下一页,除非以 html 形式显式显示它们。
这是我在控制器中获取并传递给视图的对象:
@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>
从表单来看,只有 name 和 id 值会出现,但是 userId一片空白。我需要在没有 post 的情况下获取此 userId。
这是我的 post-我处理对象的进程控制器:
@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 上搜索,但没有找到任何解决方案。
非常感谢,
您可以从数据库中获取以前的医生对象并从那里获取用户 ID,如下所示:
@PostMapping(value="/save")
public String save(@Valid Doctor dr, BindingResult bindingResult){
Doctor prevDr = doctorService.getById(dr.getId());
dr.setUserId(prevDr.getUserId());
doctorValidator.validate(dr, bindingResult);
if (bindingResult.hasErrors()) {
return "object-form";
}
else{
doctorService.save(dr);
return "redirect:list";
}
}
我有一个休眠实体对象。我需要更新这个对象,所以我把这个对象传递给了一个表单。在表格中,我将更改一些值,而其他值是不变的。而且我无法向客户端显示这些常量值,因此它们应该通过另一种方法传递到下一页,除非以 html 形式显式显示它们。
这是我在控制器中获取并传递给视图的对象:
@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>
从表单来看,只有 name 和 id 值会出现,但是 userId一片空白。我需要在没有 post 的情况下获取此 userId。
这是我的 post-我处理对象的进程控制器:
@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 上搜索,但没有找到任何解决方案。
非常感谢,
您可以从数据库中获取以前的医生对象并从那里获取用户 ID,如下所示:
@PostMapping(value="/save")
public String save(@Valid Doctor dr, BindingResult bindingResult){
Doctor prevDr = doctorService.getById(dr.getId());
dr.setUserId(prevDr.getUserId());
doctorValidator.validate(dr, bindingResult);
if (bindingResult.hasErrors()) {
return "object-form";
}
else{
doctorService.save(dr);
return "redirect:list";
}
}