菜鸟初步接触spring3,一个问题纠结了三个小时,查了资料找了又找,总算解决了:
贴代码先:
Controller:
package web;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;
import dao.Contact;
@Controller
@SessionAttributes
public class ContactController {
@RequestMapping(value = "/addContact", method = RequestMethod.POST)
public String addContact(@ModelAttribute("contact")
Contact contact, BindingResult result) {
System.out.println("First Name:" + contact.getFirstname()
+ "Last Name:" + contact.getLastname());
return "redirect:contacts.do";
}
@RequestMapping(value="/contacts")
public ModelAndView initForm() {
return new ModelAndView("contact", "xxxx", new Contact());
}
}
jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
<title>Spring 3 MVC Series - Contact Manager</title>
</head>
<body>
<h2>
Contact Manager
</h2>
<form:form method="post" action="addContact.do"
modelAttribute="xxxx">
<table>
<tr>
<td>
<form:label path="firstname">First Name</form:label>
</td>
<td>
<form:input path="firstname" />
</td>
</tr>
<tr>
<td>
<form:label path="lastname">Last Name</form:label>
</td>
<td>
<form:input path="lastname" />
</td>
</tr>
<tr>
<td>
<form:label path="lastname">Email</form:label>
</td>
<td>
<form:input path="email" />
</td>
</tr>
<tr>
<td>
<form:label path="lastname">Telephone</form:label>
</td>
<td>
<form:input path="telephone" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Add Contact" />
</td>
</tr>
</table>
</form:form>
</body>
</html>
spring的form标签绑定的表单其实是对应后台的一个对象(个人理解),这个对象的名称在后台和前台有一个相同的名字,代码中的“xxxx”