复杂对象参数
SpringMVC支持嵌套对象、集合等复杂对象结构的参数绑定。
嵌套对象
定义嵌套结构
Java
public class Address {
private String province;
private String city;
private String street;
// getter/setter
}
public class User {
private Integer id;
private String username;
private Address address; // 嵌套对象
// getter/setter
}
请求参数格式
请求:/user/save?id=1&username=张三&address.province=北京&address.city=北京&address.street=朝阳路
Java
@PostMapping("/user/save")
public String saveUser(User user) {
System.out.println(user.getAddress().getProvince());
return "success";
}
多层嵌套
支持更深层级的嵌套:
Java
public class Country {
private String name;
}
public class Address {
private String city;
private Country country; // 二层嵌套
}
public class User {
private Address address;
}
请求参数:address.country.name=中国
集合属性
List属性
Java
public class Order {
private Integer id;
private List<Item> items;
// getter/setter
}
public class Item {
private String name;
private Integer quantity;
}
请求参数:
Java
id=100
&items[0].name=商品A
&items[0].quantity=2
&items[1].name=商品B
&items[1].quantity=1
Map属性
HTML
public class Config {
private Map<String, String> properties;
}
请求参数:
text
properties[key1]=value1
&properties[key2]=value2
表单示例
text
<form action="/order/save" method="post">
<input type="text" name="id" value="100">
<input type="text" name="items[0].name" value="商品A">
<input type="text" name="items[0].quantity" value="2">
<input type="text" name="items[1].name" value="商品B">
<input type="text" name="items[1].quantity" value="1">
<button type="submit">提交</button>
</form>
注意事项
- 嵌套属性使用点号分隔:
对象.属性 - 集合使用索引:
list[0].属性 - Map使用key:
map[key] - POJO必须有无参构造函数和getter/setter
嵌套对象必须初始化或提供getter方法让Spring创建实例。
要点总结
- 嵌套对象:
对象.属性格式传参 - 集合元素:
list[索引].属性格式 - Map元素:
map[key]格式 - 确保POJO有无参构造和getter/setter
📝 发现内容有误?点击此处直接编辑