博客
关于我
springMVC前端传值的几种方法(基本数据类型、包装类型、自定义类型、集合)
阅读量:627 次
发布时间:2019-03-11

本文共 3720 字,大约阅读时间需要 12 分钟。

Spring Data Binding基础入门

在Spring MVC应用中,数据绑定是连接前端表单和后端Controller之间的桥梁。本文将详细介绍Spring支持的不同数据绑定类型,并提供实例说明。

1. 基本数据类型:以int为例

Controller代码

@RequestMapping("saysth.do")public void test(int count) {}

表单代码

...
  • name属性与Controller的参数名称一致即可实现数据绑定。
  • 如果表单提交的值为null或空值,可能会导致数据转换异常。

注意事项

  • 对于可能为空的值,建议使用包装类型(如Integer)进行处理,确保数据安全性。

2. 包装类型:以Integer为例

Controller代码

@RequestMapping("saysth.do")public void test(Integer count) {}

表单代码

...
  • 表单中值可以为null或空值,Controller方法参数中定义的值可以是null。
  • 这种情况下,更适用于处理可能为空的数据。

3. 自定义对象类型

Model代码

public class User {    private String firstName;    private String lastName;    // set和get方法省略}

Controller代码

@RequestMapping("saysth.do")public void test(User user) {}

表单代码

...
  • 表单中input的name值与Controller的属性名称一致即可完成数据绑定。

4. 自定义复合对象类型

Model代码

public class ContactInfo {    private String tel;    private String address;    // set和get方法省略}public class User {    private String firstName;    private String lastName;    private ContactInfo contactInfo;    // set和get方法省略}

Controller代码

@RequestMapping("saysth.do")public void test(User user) {    System.out.println(user.getFirstName());    System.out.println(user.getLastName());    System.out.println(user.getContactInfo().getTel());    System.out.println(user.getContactInfo().getAddress());}

表单代码

...
  • 在表单中,输入字段的name值格式为“属性名(对象属性).属性名”,确保Spring能够正确绑定复合对象。

5. List绑定

Model代码

public class User {    private String firstName;    private String lastName;    // set和get方法省略}public class UserListForm {    private List
users; public List
getUsers() { return users; } public void setUsers(List
users) { this.users = users; }}

Controller代码

@RequestMapping("saysth.do")public void test(UserListForm userForm) {    for (User user : userForm.getUsers()) {        System.out.println(user.getFirstName() + " - " + user.getLastName());    }}

表单代码

...
  • List绑定需要绑定在对象上,而不是直接在Controller方法参数中。
  • 如果表单中存在动态添加或删除操作,需要注意List的大小与下标的关系。

注意事项

  • 如果下标值超过实际集合大小,会出现异常。确保下标值与集合大小一致。

6. Set绑定

Model代码

public class User {    private String firstName;    private String lastName;    // set和get方法省略}public class UserSetForm {    private Set
users = new HashSet<>(); public Set
getUsers() { return users; } public void setUsers(Set
users) { this.users = users; }}

Controller代码

@RequestMapping("saysth.do")public void test(UserSetForm userForm) {    for (User user : userForm.getUsers()) {        System.out.println(user.getFirstName() + " - " + user.getLastName());    }}

表单代码

...
  • Set和List类似,需绑定在对象上。同时需要确保表单中存在足够的下标值或元素。

7. Map绑定

Model代码

public class User {    private String firstName;    private String lastName;    // set和get方法省略}public class UserMapForm {    private Map
users; public Map
getUsers() { return users; } public void setUsers(Map
users) { this.users = users; }}

Controller代码

@RequestMapping("saysth.do")public void test(UserMapForm userForm) {    for (Map.Entry
entry : userForm.getUsers().entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue().getFirstName() + " - " + entry.getValue().getLastName()); }}

表单代码

...
  • Map绑定允许使用任意的键名(字符串),与对应的值对象绑定。
  • 键值对需用方括号括起,键可使用单引号包装。

总结

  • 基本数据类型的绑定简单直接,只需保证值不为null或空值。
  • 包装类型适用于可能为空的值。
  • 自定义对象类型和复合对象类型需确保属性名称与表单字段名称一致。
  • List和Set绑定需要注意下标值与实际容量一致,防止异常。
  • Map绑定支持任意键名,方便处理复杂的数据场景。

通过合理选择和配置数据绑定类型,可以实现前后端的数据高效交互,充分发挥Spring的优势。

转载地址:http://klptz.baihongyu.com/

你可能感兴趣的文章
python利用pyshark监听网卡来抓包其中pyshark中摸索的一些可用参数
查看>>
python利用excel分析过杀漏失
查看>>
python判断汉字数目
查看>>
python判断文件是空的,如果是空的,就删除
查看>>
python判断密码是否正确_python密码判断是否符合要求的方法
查看>>
python判断字符串包含中文_Python 判断字符串是否包含中文
查看>>
python删除第一行_Python 乱码指北:一行删掉根目录
查看>>
Python删除列表元素的三种方法
查看>>
python初步学习-python数据类型-集合(set)
查看>>
python列表生成字典_Python中将字典转换为列表的方法
查看>>
python列表对应元素合并为列表及判断一个列表是几维
查看>>
python列表去重复后按照顺序_从包含不可共元素的Python列表中删除重复元素,同时保留顺序?...
查看>>
python列表前几个_python之列表
查看>>
python列表元组
查看>>
Python列表/元组/字典和集合使用
查看>>
python列表 行列选择_python_pandas_dataframe_行列选择_切片操作
查看>>
python列表
查看>>
python列出当前目录、子目录和文件的脚本
查看>>
python+flask计算机毕业设计骨科门诊患者档案管理系统(程序+开题+论文)
查看>>
python+flask计算机毕业设计高校体测管理系统的设计与实现(程序+开题+论文)
查看>>