04参数绑定

2019-08-02  本文已影响0人  RobertLiu123

参数绑定(重要)
有以下几种

简单类型
对象类型(简单对象)
包装类绑定(对象里有对象)
复杂类型绑定(数组 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;
}
上一篇 下一篇

猜你喜欢

热点阅读