gpt4 book ai didi

java - Spring MVC 缺少请求属性

转载 作者:行者123 更新时间:2023-11-30 05:43:52 26 4
gpt4 key购买 nike

所以我目前正在学习有关 Spring MVC 的 udemy 类(class)。在当前部分中,正在构建一个简单的表单来提交名字和姓氏。

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;
}
}

接下来信息类应该被转发到 View 文件hello.jsp

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

</body>

我认为这实际上相当简单,但提交表单后我得到异常“缺少信息类型的请求属性'info'”。我根据 udemy 讲师的代码仔细检查了我的代码,但没有发现任何错误。有人可以帮忙吗?

顺便说一句,我不知道它是否与此错误有关,但是在将 @Controller 添加到该类后,Eclipse 中的自动完成功能将停止对该类起作用。删除注释后,自动完成功能将再次开始工作。

最佳答案

您使用了错误的注释。 @RequestAttribute用于使用 setAttribute 检索在 HttpServletRequest 上设置的属性。但是,您希望将请求参数绑定(bind)到对象,为此您应该使用 @ModelAttribute改为注释。

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

更改注释即可使其工作。

关于java - Spring MVC 缺少请求属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55169992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com