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

你可能感兴趣的文章
npm install 报错 no such file or directory 的解决方法
查看>>
npm install 权限问题
查看>>
npm install报错,证书验证失败unable to get local issuer certificate
查看>>
npm install无法生成node_modules的解决方法
查看>>
npm install的--save和--save-dev使用说明
查看>>
npm node pm2相关问题
查看>>
npm run build 失败Compiler server unexpectedly exited with code: null and signal: SIGBUS
查看>>
npm run build报Cannot find module错误的解决方法
查看>>
npm run build部署到云服务器中的Nginx(图文配置)
查看>>
npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
查看>>
npm scripts 使用指南
查看>>
npm should be run outside of the node repl, in your normal shell
查看>>
npm start运行了什么
查看>>
npm WARN deprecated core-js@2.6.12 core-js@<3.3 is no longer maintained and not recommended for usa
查看>>
npm 下载依赖慢的解决方案(亲测有效)
查看>>
npm 安装依赖过程中报错:Error: Can‘t find Python executable “python“, you can set the PYTHON env variable
查看>>
npm.taobao.org 淘宝 npm 镜像证书过期?这样解决!
查看>>
npm—小记
查看>>
npm介绍以及常用命令
查看>>
NPM使用前设置和升级
查看>>