现在我有一种编辑项目的方法。 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);
但这看起来不是很理想。有更好的方法吗?
谢谢!