博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC数据绑定入门
阅读量:3910 次
发布时间:2019-05-23

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

  • 多层级对象的数据绑定
    User对象属性里有一个是ContactInfo对象
public class User{
private String name; private Integer age; private ContactInfo contactInfo; public String getName(){
return name; } public void setName(String name){
this.name = name; } public Integer getAge(){
return age; } public void setAge(Integer age){
this.age = age; } public ContactInfo getContactInfo (){
return contactInfo; } public void setContactInfo(ContactInfo contactInfo){
this.contactInfo = contactInfo; } }
@RequestMapping(value = "object.do")@ResponseBodypublic String object(User user){
return user.toString();}

绑定时我们只需加上声明的对象的变量名就可以了:

http://localhost:8080/object.do?name=jack&age=12&contactInfo.phone=1380013800

  • 同属性的多对象
    有一个Admin的类的属性是和User类一样的,这时候需要一个InitBinder注解来解决
@RequestMapping(value = "object.do")@ResponseBodypublic String object(User user,Admin admin){
return user.toString()+" "+admin.toString();}@InitBinder("user")public void initUser(WebDataBinder binder){
binder.setFieldDefaultPrefix("user.");}@InitBinder("admin")public void initUser(WebDataBinder binder){
binder.setFieldDefaultPrefix("admin.");}

绑定时我们只需加上声明的对象的前缀就可以了:

http://localhost:8080/object.do?user.name=jack&admin.name=bob

  • 关于List的数据绑定
    SpringMVC是不支持这样写的:
@RequestMapping(value = "list.do")@ResponseBodypublic String object(List
userList){
return userList.toString();}

我们需要声明一个包含List类型属性的类来绑定:

创建一个UserListForm类:

public class UserListForm(){
private List
users; public List
getUsers(){
return users; } public void setName(List
users){
this.users= users; }

用UserListForm 来绑定数据:

@RequestMapping(value = "list.do")@ResponseBodypublic String object(UserListForm userListForm ){
return userListForm.toString();}

http://localhost:8080/list.do?users[0].name=jack&users[1].name=bob

绑定时要注意下标索引的连续,尽量避免空间的浪费

  • 关于Set的数据绑定
    Set类型在实际应用场景中的作用常用于重复对象判断和排除重复。
    Set在运用时需要初始化,且SpringMVC对Set类型的支持也不够好,所以在实际开发中,Set基本上用不到。
  • 关于Map的数据绑定
    因为Map类型的key是唯一,Map适用于非重复的场景或者允许重复被覆盖的场景。
    先创建一个包含Map类型的类:
public class UserMapForm(){
private Map
users; public Map
getUserMap(){
return userMap; } public void setUserMap(Map
userMap){
this.userMap = userMap; }

用UserMapForm来绑定数据:

@RequestMapping(value = "map.do")@ResponseBodypublic String object(UserMapForm userMapForm ){
return userMapForm .toString();}

http://localhost:8080/list.do?users[‘X’].name=jack&users[‘X’].age=21&users[‘Y’].name=Tom

  • 关于json的数据绑定
    注意:要在pom.xml配置jackson-mapper-asl的依赖
@RequestMapping(value = "json.do")@ResponseBodypublic String object(@RequestBody User user){
return user.toString();}
  • 关于xml的数据绑定
    要在实体类上加上两个注解
@XmlRootElement(name="user")public class User{
private String name; private Integer age; @XmlElement(name="name") public String getName(){
return name; } public void setName(String name){
this.name = name; } @XmlElement(name="age") public Integer getAge(){
return age; } public void setAge(Integer age){
this.age = age; } }
@RequestMapping(value = "xml.do")@ResponseBodypublic String object(@RequestBody User user){
return user.toString();

另外,在开发过程中,对于可能为空的数据,最好使用包装类型。

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

你可能感兴趣的文章
没有docker,谈什么微服务架构?
查看>>
进击吧! Blazor 第一期
查看>>
初识ABP vNext(6):vue+ABP实现国际化
查看>>
ASP.NET Core 注册单例方案
查看>>
ASP.NET Core Blazor Webassembly 之 数据绑定
查看>>
中移动完成透镜天线远距覆盖和降本增效试点
查看>>
程序员过关斩将--解决分布式session问题
查看>>
【翻译】.NET 5 Preview8发布
查看>>
Dotnet Core异常处理的优雅实践
查看>>
将 .NET Framework 项目转换为 .NET Standard 项目
查看>>
使用 GB28181.Solution + ZLMediaKit + MediaServerUI 进行摄像头推流和播放
查看>>
从零开始内建你的安全测试流程
查看>>
TypeScript 4.0 发布
查看>>
快醒醒,C# 9 中又来了一堆关键词 init,record,with
查看>>
【招聘(深圳)】轻岁 诚聘.NET Core开发
查看>>
await,async 我要把它翻个底朝天,这回你总该明白了吧
查看>>
.NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中
查看>>
使用Jenkins来发布和代理.NetCore项目
查看>>
欢迎来到 C# 9.0(Welcome to C# 9.0)
查看>>
Dapr微服务应用开发系列1:环境配置
查看>>