这是form.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Add Student</title>
</head>
<body>
<form:form action="addStudent" commandName="addStudent" method="post">
<table>
<tr>
<td><form:label path="name">Name:</form:label></td> <td><form:input path="name"/></td>
</tr>
<tr>
<td><form:label path="email">Email:</form:label></td> <td><form:input path="email"/></td>
</tr>
<tr>
<td><form:label path="age">Age:</form:label></td> <td><form:input path="age"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Submit"></td>
</tr>
</table>
</form:form>
</body>
</html>
这是控制器方法
@RequestMapping(value="/addStudent", method=RequestMethod.POST)
public String addStudent(@ModelAttribute("addStudent") Student student) {
System.out.println("Saving Info...");
System.out.println("Name: "+student.getName());
System.out.println("Email: "+student.getEmail());
System.out.println("Age: "+student.getAge());
return "form";
}
这是学生模型
public class Student {
private String name;
private String email;
private int age;
private int id;
public Student() {
super();
}
}
我想不需要web.xml或dispatcher-servlet.xml。每个东西都被正确绑定,我的意思是commandName在jsp中是正确的。 ModelAttribute在控制器中是正确的,然后为什么控制器没有到达控制器? :(
请帮忙。我已经浪费了半天的时间。 PS:我是Spring和stackoverflow的新手。
修改
建议之后,我的代码如下:
控制器方法:
public String addStudent(@ModelAttribute("student") Student student, BindingResult result) {
jsp表格:
<form:form action="addStudent" commandName="student" method="post">
修改
自己解决了 为modelattibute添加了这个方法
@ModelAttribute("student")
public Student getForm() {
return new Student();
}
答案 0 :(得分:0)
只要commandName和modelAttribute字符串相同即可。
同样我是Spring的新手和东西...... 但是我猜它找不到正确的请求映射,因为你在请求映射中有/ addStudent,而在表单动作中只有addStudent。如果表单在上下文根目录中,那很好。 你能尝试检查一下吗?
另外,请在arg列表中添加BindingResult对象 public String addStudent(@ModelAttribute(&#34; addStudent&#34;)Student student,BindingResult results)