@RequestAttribute в springMVC не привязывает объект класса Entitiy

Я новичок в Spring, я пытаюсь разработать базовый проект Java с Spring MVC с использованием аннотаций, я пытаюсь создать объект моего класса Entity (Information.java) в контроллере с помощью @RequestAttribute и отправить его в представление, мой код следующим образом

Мой класс контроллера

 package org.practice.spring;

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestAttribute;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView

    @Controller()
    public class HelloController
    {

        @RequestMapping("/hello")
        public ModelAndView helloWorld(@RequestAttribute 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;
        }
    }

Мой класс сущности

package org.practice.spring;

public class Information {
    private String firstName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    private String lastName;

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
   }

Индекс.jsp

<%@ page language = "java" contentType = "text/html; charset=UTF-8"
    pageEncoding = "UTF-8"%>
    <%@ taglib prefix = "form" uri = "http://www.springframework.org/tags/form" %>
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>Hello,Please Enter Name</h3>
<form:form action = "hello" modelAttribute = "info">
First Name:<form:input path = "firstName"/><br>
Last Name:<form:input path = "lastName"/><br>
<input type = "submit" value = "Submit">

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

привет.jsp

<%@ page language = "java" contentType = "text/html; charset=UTF-8"
    pageEncoding = "UTF-8"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8">
<title>Hello</title>
</head>
<body>
Hello World
<h3>Hello ${firstName} ${lastName}</h3>

</body>
</html>

и Tomcat дает мне это

org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver logException WARNING: Resolved [org.springframework.web.bind.ServletRequestBindingException: Missing request attribute 'userInfo' of type Information]

Когда я запускаю браузер приложения, он дает мне это

HTTP Status 400 – Bad Request Type Status Report

Message Missing request attribute 'userInfo' of type Information

Description The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).

Пока у меня нет синтаксических ошибок в моем коде, но мой код не работает, я блуждал здесь почти 2 дня, много гуглил, но безуспешно, любая помощь будет оценена.

Я думаю, вы хотели вместо этого использовать @PathVariable...

nafas 18.03.2019 16:54

Как насчет использования from @RequestAttribute в @ModelAttribute("info") в вашем методе helloWorld?

kangtaku 18.03.2019 17:26

Спасибо за ответ, я следую учебнику по udemy, и инструктор использует эту аннотацию для разработки приложения, я кодирую точно так же, как он, но у меня это не работает, если я использую любую другую аннотацию, я разорвал бы ссылку на проект

kiran 18.03.2019 19:49

Тогда учебник неправильный. Для привязки вы должны использовать @ModelAttribute и, следовательно, это точная копия другого вопроса.

M. Deinum 19.03.2019 14:33

ваше решение работает, я надеюсь, что в дальнейшем у меня не возникнет проблем, спасибо.

kiran 19.03.2019 15:09
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
5
858
1

Ответы 1

Вы можете попробовать это: @RequestAttribute(name="info").

Спасибо, я попробовал @RequestAttribute(name = "info"), и теперь я получаю сообщение "Отсутствует атрибут запроса 'информация' типа информации".

kiran 18.03.2019 22:07

Другие вопросы по теме