springboot(6)之前端传递参数的方式 普通 集合 数组
实体类传递
首先我们在后端定义一个实体类,通过lombok插件重写 有参 无参 get set toString 方法,
然后前端发送数据,后端就会自动收到,然后属性填写
后端代码如下
@AllArgsConstructor
@Data
@NoArgsConstructor
public class role {private String name;private String skill;private Integer age;@Overridepublic String toString() {return "role{" +"name='" + name + '\'' +", skill='" + skill + '\'' +", age=" + age +'}';}
}
实体类
然后是对应的映射
@GetMapping("/role")public void getName4(role role){System.out.println(role);}
会输出前端装填的数据
前端的数据如下
请注意,前端和后端的name必须一样
但是前端后端不一样的话,我们可以使用 @RequestParam()来绑定前后的关系
嵌套的实体类
所谓嵌套实体类,请看如下结构
我们首先给出一个address类
@AllArgsConstructor
@NoArgsConstructor
@Data
public class address {private String address;}
然后我们在 role类中定义它
@AllArgsConstructor
@Data
@NoArgsConstructor
public class role {private String name;private String skill;private Integer age;private address address;@Overridepublic String toString() {return "role{" +"name='" + name + '\'' +", skill='" + skill + '\'' +", age=" + age +", address=" + address +'}';}
}
目标,在前端传递四个数据,包括 address
通过 address.address可以传递数据给后端
数组传值
首先我们完善后端的方法
@GetMapping("/shuzu") public void getName5(String[] name){for (int i = 0; i <name.length;i++){System.out.println(name[i]);} }
前端如下
请注意:我们需要的是 只要前端的name 和后端的数组名一致就可以了
输出结果如下
集合的传递
s首先给出后端代码
@GetMapping("/jihe")public void getName6(List<String> name){for ( String i : name){System.out.println(i);}
前端代码
为什么出错呢?
java.lang.IllegalStateException: No primary or single unique constructor found for interface java.util.List
大致是 前端传递数据,但是后端不知道这是数据,于是去创建集合,但是创建失败
于是我们只需要告诉后端,前面传递过来的是一个集合数据就可以了
只要添加
@RequestParam 就可以了