Метод в контроллере 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.
Почему так происходит? И могу ли я как то сделать так, чтобы метод получал только модель?