使用SpringMVC和JPA处理只读字段更新的最佳方法

时间:2019-04-18 17:00:13

标签: java spring spring-mvc jpa

现在我有一种编辑项目的方法。 GET处理程序(用于绘制html表单)是这样的:

@RequestMapping(value = "/item/{id}", method = RequestMethod.GET)
public String editItem(HttpServletRequest request, Model model, @PathVariable String id) {
    model.addAttribute("item", itemServive.getById(id));
    return "item";
}

当我提交该表单时,将调用一个如下所示的PUT方法:

@RequestMapping(value = "/item", method = RequestMethod.PUT)
public ModelAndView updateCustomer(HttpServletRequest request
        , @Valid Item item
        , BindingResult bindingResult
        , RedirectAttributes redirectAttributes) {
    ModelAndView modelAndView = new ModelAndView("/item/"+item.getId());
    if (!bindingResult.hasErrors()) {
            itemService.update(item);
    }
    return modelAndView;
}

现在,假设我不想更新该项目中的一个名为“ code”的字段。我必须以(至少是隐藏的)形式显示它,因为如果没有显示,它将被设置为NULL。使用隐藏归因的问题在于,我可以编辑该值,并在提交表单时发送另一个值。我想我无法让该项目再次更新,并且仅设置我要更改的值:

Item toUpdate = itemService.getById(item.getId());
    toUpdate.setName(item.getName());
    toUpdate.setPrice(item.getPrice());
    // etc etc
    itemService.update(toUpdate);

但这看起来不是很理想。有更好的方法吗?

谢谢!

0 个答案:

没有答案