携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情
今天我们来学习一下复合数据通过表单提交,我们如何来接收数据
1.表单复合数据:复合数据指的是下拉列表和多选框数据和其他inpu框数据组合提交表单
如
这种数据我们该如何处理呢?
2.现有表单结构如下所示:
<form action="./apply" method="post">
<h3>您的姓名</h3>
<input name="name" class="text" style="width: 150px">
<h3>您正在学习的技术方向</h3>
<select name="course" style="width: 150px">
<option value="java">Java</option>
<option value="h5">HTML5</option>
<option value="python">Python</option>
<option value="php">PHP</option>
</select>
<div>
<h3>您的学习目的:</h3>
<input type="checkbox" name="purpose" value="1">就业找工作
<input type="checkbox" name="purpose" value="2">工作要求
<input type="checkbox" name="purpose" value="3">兴趣爱好
<input type="checkbox" name="purpose" value="4">其他
</div>
<div style="text-align: center;padding-top:10px" >
<input type="submit" value="提交" style="width:100px">
</div>
</form>
我们如何获取这些表单数据呢?接下来我们通过几种方式来获取。
3.数组的形式获取
@PostMapping("apply")
@ResponseBody
public void apply(String name, String course, Integer[] purpose){
}
4.使用List接收(注意使用List 一定要添加 @RequestParam,注意获取到的是ArrayList形式)
@PostMapping("apply")
@ResponseBody
public void apply2(String name, String course, @RequestParam List<Integer> purpose){
}
5.使用map接收(记得添加注解@RequestParam,注意返回的是LinkHashMap格式,如果是多选框,会导致数据丢失)
@PostMapping("apply")
@ResponseBody
public void apply3( @RequestParam Map map){
}
5.实体的形式获取
定义实体对象
package com.imooc.springmvc.entity;
import java.util.List;
public class Student {
private String name;
private String course;
private List<Integer> purpose;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//一系列的getter和setter方法
}
调用
//采用实体接收
@PostMapping("apply")
@ResponseBody
public void apply4(Student student){
}
7.关联对象赋值
这边的新增address对象的信息,用于存储关联数据,关联的字段要使用 实体.字段 来表示
<form action="./apply" method="post">
<h3>您的姓名</h3>
<input name="name" class="text" style="width: 150px">
<h3>您正在学习的技术方向</h3>
<select name="course" style="width: 150px">
<option value="java">Java</option>
<option value="h5">HTML5</option>
<option value="python">Python</option>
<option value="php">PHP</option>
</select>
<div>
<h3>您的学习目的:</h3>
<input type="checkbox" name="purpose" value="1">就业找工作
<input type="checkbox" name="purpose" value="2">工作要求
<input type="checkbox" name="purpose" value="3">兴趣爱好
<input type="checkbox" name="purpose" value="4">其他
</div>
<div>
<h3>邮政编码</h3>
<input name="address.code" class="text" style="width: 150px">
<h3>手机号</h3>
<input name="address.mobile" class="text" style="width: 150px">
</div>
<div style="text-align: center;padding-top:10px" >
<input type="submit" value="提交" style="width:100px">
</div>
</form>
新增address实体(一定要getter和setter方法,不然会获取不到)
package com.imooc.springmvc.entity;
public class Address {
private String code;
private String mobile;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
}
student实体关联address实体
调用接口返回值为:
获取邮政编码字段,使用
System.out.println(student.getAddress().getCode());