参数绑定(重要)
有以下几种
简单类型
对象类型(简单对象)
包装类绑定(对象里有对象)
复杂类型绑定(数组 list map)
第1节
为了测试,先建立两个实体TabClass.java Student.java
public class TabClass {
private int classId;
private String className;
....
}
public class Student {
private int id;
private String name;
private String no;
private String sex;
private TabClass tabClass;
.....
}
页面:
<form action="<%=request.getContextPath()%>/student/add.action" method="post">
id:<input type="text" name="id" value="123"/><br>
姓名:<input type="text" name="name" value="陈昊"/><br>
学号:<input type="text" name="no" value="0910"/><br>
sex:<input type="text" name="sex" value="男"/><br>
<input type="submit" value="提交">
</form>
简单类型
@RequestMapping("/goadd")
public String goadd(){
return "addstudent";
}
@RequestMapping("/add")
public ModelAndView add(int id,String name,String no,String sex){
System.out.println(id);
System.out.println(name);
System.out.println(no);
System.out.println(sex);
ModelAndView mav=new ModelAndView("hello");
return mav;
}
后台接到前台参数后,重新命名的情况
@RequestMapping("/add1")
public ModelAndView add1(@RequestParam(value="id") int stuid,
@RequestParam(value="name") String stuname){
System.out.println(stuid);
System.out.println(stuname);
ModelAndView mav=new ModelAndView("hello");
return mav;
}
解决中文编码问题:web.xml里配置编码过滤器
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
对象类型(简单对象)
@RequestMapping("/add2")
public ModelAndView add2(Student student){
System.out.println(student.getId());
ModelAndView mav=new ModelAndView("hello");
return mav;
}
第2节
包装类绑定(对象里有对象)
其中的 tabClass是Student实体里的属性名称
<form action="<%=request.getContextPath()%>/student/add2.action" method="post">
id:<input type="text" name="id" value="123"/><br>
姓名:<input type="text" name="name" value="陈昊"/><br>
学号:<input type="text" name="no" value="0910"/><br>
sex:<input type="text" name="sex" value="男"/><br>
班级id<input type="text" name="tabClass.classId" value="16"/><br>
班级名称<input type="text" name="tabClass.className" value="java16"/><br>
<input type="submit" value="提交">
</form>
action不变
@RequestMapping("/add2")
public ModelAndView add2(Student student){
System.out.println(student.getId());
ModelAndView mav=new ModelAndView("hello");
return mav;
}
checkbox绑定
checkbox后台用数组接
前台:
爱好:<input type="checkbox" name="hobby" value="1"/>篮球
<input type="checkbox" name="hobby" value="2"/>足球
<input type="checkbox" name="hobby" value="3"/>排球
后台实体里增加hobby数组
public class Student {
private int id;
private String name;
private String no;
private String sex;
private TabClass tabClass;
private String[] hobby;
......
}
第三节
复杂类型绑定(数组 list map)
数组
接收checkbox类型用数组类型。
批量删除思路:
1)checkbox----->选中------>提交到后台 name
2)后台------>用数组接。 属性名
3)前台name<----->后台数组的属性名
前台代码:
<form action="<%=request.getContextPath()%>/student/del.action" method="post">
要删除的人员的id
<input type="checkbox" name="id" value="1"/>李海锋
<input type="checkbox" name="id" value="2"/>陈昊
<input type="checkbox" name="id" value="3"/>王晓宇
<input type="submit" value="提交">
</form>
后台action
@RequestMapping("/del")
public ModelAndView del(int[] id){
for(int i:id){
System.out.println(i);
}
ModelAndView mav=new ModelAndView("hello");
return mav;
}
list
集合类型(list map)的后台不能直接接,需要把集合封装到对象里。
样例代码:
public class ListVo {
private List<Student> studentList;
......
}
页面:
<form action="<%=request.getContextPath()%>/student/addStuds.action" method="post">
第一个学生:姓名:<input type="text" name="studentList[0].name" />性别<input type="text" name="studentList[0].sex" /><br>
第二个学生:<input type="text" name="studentList[1].name" />性别<input type="text" name="studentList[1].sex" /><br>
<input type="submit" value="提交">
</form>
controller
//批量添加
@RequestMapping("/addStuds")
public ModelAndView addStuds(ListVo vo){
for(Student s:vo.getStudentList()){
System.out.println(s.getName());
}
ModelAndView mav=new ModelAndView("hello");
return mav;
}
网友评论