Я новичок в 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 дня, много гуглил, но безуспешно, любая помощь будет оценена.
Как насчет использования from @RequestAttribute в @ModelAttribute("info") в вашем методе helloWorld?
Спасибо за ответ, я следую учебнику по udemy, и инструктор использует эту аннотацию для разработки приложения, я кодирую точно так же, как он, но у меня это не работает, если я использую любую другую аннотацию, я разорвал бы ссылку на проект
Тогда учебник неправильный. Для привязки вы должны использовать @ModelAttribute и, следовательно, это точная копия другого вопроса.
ваше решение работает, я надеюсь, что в дальнейшем у меня не возникнет проблем, спасибо.




Вы можете попробовать это: @RequestAttribute(name="info").
Спасибо, я попробовал @RequestAttribute(name = "info"), и теперь я получаю сообщение "Отсутствует атрибут запроса 'информация' типа информации".
Я думаю, вы хотели вместо этого использовать @PathVariable...