Оптимальный способ обработки обновлений для полей только для чтения с помощью SpringMVC и JPA - PullRequest
0 голосов
/ 18 апреля 2019

сейчас у меня есть метод для редактирования элементов. Обработчик 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);

Но это выглядит не очень оптимально. Есть ли лучший способ сделать это?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...