如何在Spring

时间:2017-02-21 16:53:26

标签: java spring forms hibernate modelattribute

我有一个hibernate实体对象。我需要更新此对象,因此我将此对象传递给表单。在形式中,我将改变一些值,其他值是不变的。而且我无法向客户端显示这些常量值,因此它们应该通过另一种方法传递到下一页,除非在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>

从表单中,只有名称 id 值即将到来,但 userId 为空。我需要在没有帖子的情况下获得此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上搜索过,但我找不到任何解决方案。

非常感谢,

1 个答案:

答案 0 :(得分:1)

您可以从db获取以前的医生对象并从中获取用户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";
    }
}