当有很多参数的时候,我们肯定不能用一个个参数,springmvc可以使用pojo对象来获取这次请求中的所有参数,并且全部封装到这个对象里面。
既然如此我们来讨论一下复杂的情况,就是类里面还有类,比如学生类和班级类。
一个学生类里定义了个班级变量。
我是xxx,我的班级是啥,班主任叫啥。
举个例子
这里注意啊,如果类里有date类型,在该字段上加上注解 @DateTimeFormat(pattern=”yyyy-MM-dd”),这样从前台传来值的时候,可以自动映射。
form表单
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>首页</title>
</head>
<body>
<form action="/student/add.do" method="post">
username:<input type="text" name="username"/><br/>
sex:<input type="radio" name="sex" value="MALE"/>男生
<input type="radio" name="sex"value="FEMALE"/>女生<br/>
age:<input type="text" name="age"/><br/>
<!-- POJO支持级联属性,所以name属性是如下的写法,aClass.classId,意思就是有一个aClass的类,类里面有classId属性 -->
classId:<input type="text" name="aClass.classId"/><br/>
className:<input type="text" name="aClass.className"/><br/>
班主任:<input type="text" name="aClass.bzr"/>
<input type="submit" value="提交" />
</form>
</body>
</html>
controller层
@Controller
@RequestMapping("/student")
public class AddStudent {
public static final Logger log= LoggerFactory.getLogger(AddStudent.class);
@RequestMapping(value = "/add.do",method = RequestMethod.POST)
public String add(Student student, Model model){
model.addAttribute(student);
log.info(student.toString());
return "listStudent";
}
}
这里面已经做了视图映射,将会回到web-inf下面的view/listStudent.jsp页面。
结果是:
tips:这里性别用的枚举类型,所以input输入框中value一开始用的男女一直报400,注意要和枚举值相同。