@ModelAttribute перезаписывается значениями URL - PullRequest
0 голосов
/ 02 октября 2019

У меня есть контроллер, следующий метод подписи

@PostMapping
public String doUpdate(
        @PathVariable("fooId") Long ID,
        @ModelAttribute Item form,
        Model model) 

@RequestMapping для контроллера

@RequestMapping("/foo/{fooId}/Items/{itemId}/type/{type}/update")

Я пытаюсь передать @ModelAttribute Item в контроллер черезmockMvc и flashAttr() следующим образом

 String url = String.format("/foo/%s/Items/%s/type/%s/update", fooId, itemId, type);

 mockMvc.perform(post(url)).flashAttr("form", updateContact))

Вместо заполнения form данными из flashAttr оно заполняется fooId, itemId и type

  1. Почему это происходит и 2. Есть ли способ обойти это?

1 Ответ

0 голосов
/ 07 октября 2019

В @ModelAttibute в подписи контроллера отсутствует свойство name, поэтому контроллер автоматически извлекает параметры из URL-адреса и в @ModelAttibute

Чтобы обойти это, добавьте свойство nameк атрибуту как таковому: @ModelAttribute(name = "form") flashAttr теперь будет корректно отображаться на @ModelAttribute (при условии, что оба имеют одно и то же имя, в данном случае «form»

...