Spring MVC Отсутствует атрибут запроса - PullRequest
0 голосов
/ 14 марта 2019

Так что в настоящее время я прохожу курс обучения по Spring MVC.В текущем разделе создается простая форма для отправки имени и фамилии.

Hey user, may i know your name?
<form:form action="hello" modelAttribute="info">
    First Name: <form:input path="firstName" />
    Last Name: <form:input path="lastName" />
    <input type="submit" value="Submit" />
</form:form>

Входные данные передаются через информационный класс в HelloController

@Controller
public class HelloController {

@RequestMapping("/hello")
public ModelAndView helloWorld(@RequestAttribute("info") Information userInfo) {
    ModelAndView model = new ModelAndView("hello");

    model.addObject("firstName", userInfo.getFirstName());
    model.addObject("lastName", userInfo.getLastName());

    return model;
}

@RequestMapping("/")
public ModelAndView homepage() {
    ModelAndView model = new ModelAndView("index", "info", new Information());

    return model;
}

Информационный класс:

public class Information {
private String firstName;
private String lastName;

public String getFirstName() {
    return firstName;
}
public void setFirstName(String firstName) {
    this.firstName = firstName;
}
public String getLastName() {
    return lastName;
}
public void setLastName(String lastName) {
    this.lastName = lastName;
}   
}

Далее класс информации должен быть перенаправлен в файл представления hello.jsp

<body>
<h2> Hello ${firstName} ${lastName} </h2><br/>

</body>

Я подумал, что это на самом деле довольно просто, но после отправки формы я получаю исключение "Отсутствует запросатрибут «информация» типа Информация ».Я дважды проверил свой код по отношению к коду от инструктора udemy, но не смог найти никаких ошибок.Может кто-нибудь помочь?

В отношении sidenote, я не знаю, есть ли что-нибудь, связанное с этой ошибкой, но после добавления @Controller к классу автозаполнение в eclipse перестает работать для этого класса.После удаления аннотации автозаполнение снова начинает работать.

1 Ответ

0 голосов
/ 15 марта 2019

Вы используете неправильную аннотацию.@RequestAttribute - для получения атрибутов, установленных на HttpServletRequest с использованием setAttribute.Однако вы хотите привязать параметры запроса к объекту, для этого вам следует использовать аннотацию @ModelAttribute.

@RequestMapping("/hello")
public ModelAndView helloWorld(@ModelAttribute("info") Information userInfo) { ... }

Изменение аннотации заставит его работать.

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