Spring MVC缺少请求属性
问题内容:
所以我目前正在上关于Spring MVC的udemy课程。在当前部分中,正在构建一个简单的表单来提交名字和姓氏。
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>
我以为这实际上很简单,但是提交表单后,我得到了异常“信息类型的缺少请求属性’info’”。我对照udemy讲师的代码仔细检查了我的代码,但没有发现任何错误。有人可以帮忙吗?
在旁注中,我不知道是否有与此错误相关的任何事情,但是在添加@Controller
到Class中之后,eclipse中的自动补全功能停止了该Class的工作。删除注释后,自动完成功能将再次开始工作。
问题答案:
您使用了错误的注释。@RequestAttribute
用于检索HttpServletRequest
using
上设置的属性setAttribute
。但是,您希望将请求参数绑定到对象,因此应@ModelAttribute
改为使用注释。
@RequestMapping("/hello")
public ModelAndView helloWorld(@ModelAttribute("info") Information userInfo) { ... }
更改注释将使其起作用。