@ModelAttribute в качестве аргумента метода, чтобы получить значение из модели, а не связывать параметры запроса - PullRequest
0 голосов
/ 05 октября 2019

У меня вопрос по аннотации @ModelAttribute в параметрах метода. Это из книги «Весна в действии 5». src / main https://github.com/habuma/spring-in-action-5-samples/tree/master/ch03/tacos-jpa/src/main/java/tacos

ресурсы / шаблоны https://github.com/habuma/spring-in-action-5-samples/tree/master/ch03/tacos-jpa/src/main/resources/templates

@Controller
@RequestMapping("/design")
@SessionAttributes("order")
public class DesignTacoController {
    @ModelAttribute(name = "order")
    public Order order() {
        return new Order();
    }

    @ModelAttribute(name = "taco")
    public Taco taco() {
        return new Taco();
    }

    @PostMapping
    public String processDesign(@Valid Taco design,
                                Errors errors,
                                @ModelAttribute Order order) {
        if (errors.hasErrors()) {
            return "design";
        }
        Taco saved = designRepo.save(design);
        order.addDesign(saved);
        return "redirect:/orders/current";
    }
}

цитата из книги:

"В методе processDesign () Параметр Order имеет значениеаннотирован @ModelAttribute, чтобы указать, что его значение должно исходить из модели и что Spring MVC не должен пытаться привязать к нему параметры запроса. "

Это часть, которую я не совсем понимаю, чтоавтор имел ввиду тут. Может быть, кто-то может помочь мне с примером или сказать другими словами, что здесь делает @ModelAttribute.
Я читал, что @ModelAttribute связывает весь объект Java (Order), поддерживает несколько параметров запроса, но в книге говорится, что мы используем@ModelAttribute "что Spring MVC не должен пытаться привязать к нему параметры запроса."

...