Метод в контроллере Spring получает модель, сформированную на базе значений из jsp-формы, только при указании нескольких аргументов в сигнатуре метода

У меня проблема с методом getStudentSpringOutputForm. В списке аргументов у него указана модель Model model, и ему почему то передаётся значние null.

    @RequestMapping("/studentOutputSpringForm")
    public String getStudentSpringOutputForm(Model model) {         
    {
        Student student = (Student)model.getAttribute("student");
        System.out.println(student.getFirstName() + " " + student.getLastName());

        return "studentSpringFormsView/student-output-spring-form";
    }

Это .jsp файл, в котором указана форма, из которой формируется модель, которая должна передаться методу getStudentSpringOutputForm.

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html>
<html>
<head>
    <title>Student Input Spring Form - Spring Playground</title>
</head>
<body>
<form:form action="/springForm/studentOutputSpringForm" modelAttribute="student">

    First name: <form:input path="firstName"/>
    <br><br>
    Second name: <form:input path="lastName"/>
    <br><br>
    <input type="submit" value="Submit"/>

</form:form>
</body>
</html>

При этом есть странность:

Если сделать сигнатуру метода такой:

    @RequestMapping("/studentOutputSpringForm")
    public String getStudentSpringOutputForm(@ModelAttribute("student") Student student, Model model)

То метод получит и сформированный на базе введённых в поля значений объект student, и корректно работающую модел model.

Почему так происходит? И могу ли я как то сделать так, чтобы метод получал только модель?


Ответы (0 шт):