博客
关于我
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/

你可能感兴趣的文章
Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
查看>>
Nginx配置如何一键生成
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Nginx配置负载均衡到后台网关集群
查看>>
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>